一、Set Test1

package com.shujia.lhw.day20;import java.util.HashSet;/*HashSet集合存储自定义对象并遍历如果对象的成员变量值相同即为同一个对象1、创建一个学生类2、创建HashSet集合对象3、创建5个学生对象5、将学生对象添加到集合当中6、遍历*/
public class SetTest1 {public static void main(String[] args) {//创建HashSet集合对象HashSet<Student1> set = new HashSet<>();//创建5个学生对象Student1 s1 = new Student1("明旺",18);Student1 s2 = new Student1("王宇",17);Student1 s3 = new Student1("周家祥",19);Student1 s4 = new Student1("张保桂",20);Student1 s5 = new Student1("明旺",18);//将学生对象添加到集合当中set.add(s1);set.add(s2);set.add(s3);set.add(s4);set.add(s5);//遍历for (Student1 student1 : set) {System.out.println(student1.getName()+"---"+student1.getAge());}}
}
package com.shujia.lhw.day20;import java.util.Objects;public class Student1 {private String name;private int Age;public Student1() {}public Student1(String name, int age) {this.name = name;Age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return Age;}public void setAge(int age) {Age = age;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student1 student1 = (Student1) o;return Age == student1.Age && Objects.equals(name, student1.name);}@Overridepublic int hashCode() {return Objects.hash(name, Age);}@Overridepublic String toString() {return "Student1{" +"name='" + name + '\'' +", Age=" + Age +'}';}
}

----------------------------------------------------------------------------------------------------------------------------

二、SetTest2

package com.shujia.lhw.day20;import java.util.Comparator;
import java.util.TreeSet;/*TreeSet集合存储自定义对象并遍历如果对象的成员变量值相同即为同一个对象按照年龄进行从大到小排序*/
public class SetTest2 {public static void main(String[] args) {//无参构造,走的是自然排序
//        TreeSet<Student2> set1 = new TreeSet<>();//带参数构造方法,走的是比较器排序//匿名内部类实现TreeSet<Student2> set1 = new TreeSet<>(new Comparator<Student2>(){@Overridepublic int compare(Student2 o1, Student2 o2) {
//                return 0;//按照年龄从大到小排序int i = o2.getAge() - o1.getAge();//隐含条件//年龄一样,姓名不一定一样int i2 = i == 0 ? o1.getName().compareTo(o2.getName()):i;return i2;}});//创建学生对象Student2 s1 = new Student2("刘备",18);Student2 s2 = new Student2("曹操",19);Student2 s3 = new Student2("孙权",7);Student2 s4 = new Student2("诸葛亮",11);Student2 s5 = new Student2("司马懿",19);Student2 s6 = new Student2("刘备",20);//将学生对象添加到集合中set1.add(s1);set1.add(s2);set1.add(s3);set1.add(s4);set1.add(s5);set1.add(s6);//遍历for (Student2 student2 : set1) {System.out.println(student2.getName()+"---"+student2.getAge());}}
}
package com.shujia.lhw.day20;public class Student2 implements Comparable<Student2>{private String name;private int age;public Student2() {}public Student2(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student2{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int compareTo(Student2 o) {
//        return 0;//按照年龄从大到小进行排序int i = o.getAge() - this.age;//隐含条件//年龄一样,姓名不一定一样int i2 = i == 0 ? o.name.compareTo(this.name):i;return i2;}
}

-------------------------------------------------------------------------------------------------------------------------------

三、SetTest3

package com.shujia.lhw.day20;import java.util.Comparator;
import java.util.TreeSet;/*键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台1、创建学生类2、创建集合对象TreeSet3、创建学生对象4、将学生对象添加到集合当中5、遍历*/
import java.util.Scanner;public class SetTest3 {public static void main(String[] args) {//比较器排序TreeSet<Student3> set = new TreeSet<>(new Comparator<Student3>() {@Overridepublic int compare(Student3 o1, Student3 o2) {
//                return 0;//按照总分从高到低输出到控制台int i = o2.getSumScore() - o1.getSumScore();//挖掘隐含条件//总分一样,语文成绩不一定一样int i2 = i == 0 ? o2.getChinese() - o1.getChinese() : i;//语文成绩一样,数学成绩不一定一样int i3 = i2 == 0 ? o2.getMath() - o1.getMath() : i2;//各科成绩一样姓名不一定一样int i4 = i3 == 0 ? o1.getName().compareTo(o2.getName()) : i3;return i4;}});//创建键盘录入对象Scanner sc = new Scanner(System.in);//使用创建学生对象并添加到集合当中for (int i = 0; i <= 5; i++) {System.out.println("请输入第" + i + "个学生的姓名:");String name = sc.next();System.out.println("请输入" + i + "学生的语文成绩:");int chinese = sc.nextInt();System.out.println("请输入" + i + "学生的数学成绩:");int math = sc.nextInt();System.out.println("请输入" + i + "学生的英语成绩:");int english = sc.nextInt();//创建学生对象
//            Student3 student = new Student3(name,chinese,math,english);Student3 student3 = new Student3();student3.setName(name);student3.setChinese(chinese);student3.setMath(math);student3.setEnglish(english);//将学生对象添加到集合当中set.add(student3);}System.out.println("=====================================================");System.out.println("学生的信息如下:");System.out.println("姓名\t语文成绩\t数学成绩\t英语成绩\t总成绩");//遍历学生信息for (Student3 student3 : set) {System.out.println(student3.getName()+"\t"+student3.getChinese()+"\t"+student3.getMath()+"\t"+student3.getEnglish()+"\t"+student3.getSumScore());}}
}
package com.shujia.lhw.day20;public class Student3 {private String name;private int chinese;private int math;private int english;public Student3() {}public Student3(String name, int chinese, int math, int english) {this.name = name;this.chinese = chinese;this.math = math;this.english = english;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getChinese() {return chinese;}public void setChinese(int chinese) {this.chinese = chinese;}public int getMath() {return math;}public void setMath(int math) {this.math = math;}public int getEnglish() {return english;}public void setEnglish(int english) {this.english = english;}
//定义获取总分的方法public int getSumScore(){return chinese+math+english;}@Overridepublic String toString() {return "Student3{" +"name='" + name + '\'' +", chinese=" + chinese +", math=" + math +", english=" + english +'}';}
}

--------------------------------------------------------------------------------------------------------------------------------

四、Map

package com.shujia.lhw.day20;
/*Map接口的概述:将键映射到值的对象Map不能包含重复的键每个键可以映射到最多一个值举例:<k,v>1001 王宇1002 周家祥1001 周家祥(不允许)Map集合中,K的值不能重复Map接口与Collection接口的区别:1、Map接口与Collection接口是平级关系,不存在继承关系,都是属于util包下的2、Map中的元素都是成对出现的,Map集合中的键是唯一的,值是可以重复的,又称之为:夫妻对3、Collection集合中的元素都是单独出现的,Collection接口下面有一个子接口Set,它的元素也是唯一List中的元素也是单独存出现,可以重复,像这样单独存在的元素,称之为:光棍Map接口中的方法:1、添加功能:V put(k key,V value)将指定值与该映射中的指定键相关联(可选操作)举例:map.put(1001,"王宇");2、删除功能:void clear()从Map中删除所有的映射(可选操作)V remove(Object key)如果存在(可选操作),从该Map中删除一个键的映射3、判断功能:boolean containsKey(Object key)如果此映射包含指定键的映射,则返回trueboolean containsValue(Object value)如果Map将一个或多个键映射到指定的值,则返回trueboolean isEmpty()如果Map不包含键值映射,则返回true4、获取功能:V get(Object key)返回指定键所映射的值,或null 如果此映射包含键的映射Set<K> keySet()返回此Map中包含的键的Set视图Collection<V> values()返回此Map中所包含的值的Collection视图Set<Map.Entry<K,V>> entrySet()获取Map中的所有元素,元素的类组成是由一个键和一个值组成5、长度功能:int size()返回此Map中键值映射的数量*/import com.sun.org.apache.bcel.internal.generic.IUSHR;import java.util.HashMap;
import java.util.Map;public class MapDemo {public static void main(String[] args) {//创建Map集合对象//由于Map是一个接口,所以接口不能实例化,要使用一个具体的子类来进行实例化//这里借助HashMapMap<String,String> map = new HashMap<>();//添加元素//V put(K key,V value)将指定的值与该映射中的键相关联(可选操作)//这里的返回值是将来再次插入同一个键的时候,被覆盖的那个值System.out.println(map.put("黄晓明","杨颖"));System.out.println(map.put("邓超","孙俪"));System.out.println(map.put("小虎","冯提莫"));System.out.println(map.put("小虎","IU"));map.put("黄晓明","杨颖");map.put("邓超","孙俪");map.put("小虎","冯提莫");map.put("小虎", "IU");//删除功能://void clear()从该Map中删除所有的映射(可选操作)
//        map.clear();
//        V remove(Object key)如果存在(从可选的操作),从该Map中删除一个键的映射//返回对应删除的值
//        System.out.println(map.remove("小虎"));System.out.println("==============================================]");//boolean containsKey(Object key)如果此映射包含指定键的映射,则返回trueSystem.out.println(map.containsKey("小虎"));//boolean containsValue(Object value)如果此Map将一个或多个键映射到指定的值,则返回trueSystem.out.println(map.containsValue("IU"));System.out.println(map.isEmpty());System.out.println("====================================================");System.out.println(map);}
}

-------------------------------------------------------------------------------------------------------------------------

五、Map 2

package com.shujia.lhw.day20;import java.util.Collection;
import java.util.HashMap;
import java.util.Set;/*Map集合的获取功能:V get(Object key)返回指定键所映射的值,或 null如果此映射包含该建的映射Set<K> keySet()返回此Map中包含的键的Set视图Collection<V> values()返回此Map中包含的值的Collection视图*/
public class MapDemo2 {public static void main(String[] args) {//创建Map集合对象HashMap<String,String> map = new HashMap<>();//向集合中添加元素map.put("黄晓明","杨颖");map.put("邓超","孙俪");map.put("小虎","冯提莫");map.put("张杰","谢娜");//V get(Object key)返回到指定键所映射到的值,或 null如果此映射包含改键的映射//根据key找值//如果map中不包含此key,则返回nullSystem.out.println(map.get("小虎"));System.out.println(map.get("明旺"));System.out.println("===========================================");//Set<K> keySet()返回此Map中包含的键的Set视图Set<String> set = map.keySet();for(String s : set){
//            System.out.println(s);String value = map.get(s);System.out.println(s+":"+value);}//Collection<V> values() 返回此Map中包含的值的Collection视图Collection<String> values = map.values();for (String s : values) {System.out.println(s);}}
}

-----------------------------------------------------------------------------------------------------------------------

六、Map 3

package com.shujia.lhw.day20;import java.util.HashMap;
import java.util.Set;/*集合遍历的方式一:根据键找值1、通过调用keySet()方法获取Map集合中所有的key2、通过get(key)这个方法,可以获取到每一个key对应的value3、输出*/
public class MapDemo3 {public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();//向集合中添加元素map.put("霞","洛");map.put("蛮王","寒冰");map.put("卢锡安","塞纳");map.put("盖伦","卡特");//通过调用keySet()方法获取Map集合中所有的keySet<String> keySet = map.keySet();//遍历keySet获取到每一个keyfor (String s : keySet) {String value = map.get(s);System.out.println(s+":"+value);}}
}

---------------------------------------------------------------------------------------------------------------------------------

七、Map 4

package com.shujia.lhw.day20;import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*Map集合遍历的第二种方式:依次先把所有的键值对获取到,然后再依次获取到每一个键值对的key和value*/
public class MapDemo4 {public static void main(String[] args) {//1、创建集合对象HashMap<String,String> map = new HashMap<>();//2、向集合中添加元素map.put("王子1","白雪公主");map.put("王子2","灰姑娘");map.put("王子3","美人鱼");//遍历:依次先把所有的键值对获取到//Set<Map.Entry<K,V>> entrySet()获取Map中所有元素,元素的类组成是由一个键和一个值组成Set<Map.Entry<String,String>> set = map.entrySet();//遍历集合获取每一个键值对for (Map.Entry<String, String> keyValue : set) {String key = keyValue.getKey();String value = keyValue.getValue();System.out.println(key+":"+value);}}
}

---------------------------------------------------------------------------------------------------------------------------

八、Map 5

package com.shujia.lhw.day20;import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*HashMap<Integer,String>*/
public class MapDemo5 {public static void main(String[] args) {//1、创建集合对象HashMap<Integer,String> map = new HashMap<>();//2、向集合中添加元素map.put(1001,"明旺");map.put(1002,"王宇");map.put(1003,"周家祥");map.put(1003,"张保桂");//3、遍历集合System.out.println("================方式一:根据键找值====================");//获取到所有的keySet<Integer> set = map.keySet();for (Integer i : set) {String s = map.get(i);System.out.println(i+":"+s);}System.out.println("=================方式二:根据键值对找键和值===================");Set<Map.Entry<Integer,String>> entrySet = map.entrySet();for (Map.Entry<Integer, String> keyValue : entrySet) {Integer key = keyValue.getKey();String value = keyValue.getValue();System.out.println(key+":"+value);}}
}

------------------------------------------------------------------------------------------------------------------------------

九、Map 6

package com.shujia.lhw.day20;import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*HashMap<String,Student>*/
public class MapDemo6 {public static void main(String[] args) {//1、创建集合对象HashMap<String,Student4> map = new HashMap<>();//2、创建学生对象Student4 s1 = new Student4("明旺",18);Student4 s2 = new Student4("王宇",17);Student4 s3 = new Student4("周家祥",19);Student4 s4 = new Student4("张保桂",19);//3、向集合中添加键对值map.put("帅气男孩",s1);map.put("一表人才",s2);map.put("油腻大叔",s3);map.put("忧郁男孩",s4);Set<Map.Entry<String,Student4>> entries = map.entrySet();for (Map.Entry<String,Student4>keyValue:entries){String key = keyValue.getKey();Student4 value = keyValue.getValue();System.out.println(key+":"+value);}}
}

---------------------------------------------------------------------------------------------------------------------------------十、Map 7

package com.shujia.lhw.day20;import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*HashMap<Student,String>如果key是自己定义的一个对象,该类需要重写hashCode方法和equals方法因为put方法的底层,添加元素的标准就是根据hashCode()方法和equals()的值来判断元素是否重复*/
public class MapDemo7 {public static void main(String[] args) {//1、创建集合对象HashMap<Student5,String> map = new HashMap<>();//2、创建学生对象Student5 s1 = new Student5("王昭君",17);Student5 s2 = new Student5("貂蝉",16);Student5 s3 = new Student5("杨玉环",18);Student5 s4 = new Student5("西施",19);Student5 s5 = new Student5("王昭君",17);//将元素添加到集合中map.put(s1,"1111");map.put(s2,"2222");map.put(s3,"3333");map.put(s4,"4444");map.put(s5,"5555");//遍历Set<Map.Entry<Student5,String>> entries = map.entrySet();for (Map.Entry<Student5,String> keyValue:entries){Student5 key = keyValue.getKey();String value = keyValue.getValue();System.out.println(key+":"+value);}}
}

------------------------------------------------------------------------------------------------------------------------------

十一、ArrayListAndHashMap

package com.shujia.lhw.day20;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*ArrayList嵌套HashMap*/
public class ArrayListAndHashMap {public static void main(String[] args) {//定义一个ArrayList对象ArrayList<HashMap<String,String>> list = new ArrayList<>();//创建2个HashMap对象HashMap<String,String> map1 = new HashMap<>();map1.put("霞","洛");map1.put("卢锡安","塞纳");map1.put("蛮王","寒冰");map1.put("盖伦","卡特");HashMap<String,String> map2 = new HashMap<>();map2.put("邓超","孙俪");map2.put("张杰","谢娜");map2.put("小虎","冯提莫");list.add(map1);list.add(map2);//遍历for (HashMap<String, String> maps : list) {Set<Map.Entry<String,String>> entries = maps.entrySet();for (Map.Entry<String, String> keyValue : entries) {String key = keyValue.getKey();String value = keyValue.getValue();System.out.println(key+":"+value);}}}
}

--------------------------------------------------------------------------------------------------------------------------

十二、CollectionsDemo1

package com.shujia.lhw.day20;import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;/*Collections工具类的概述:针对集合操作的工具类Collections与Collection的区别:1、Collection是单列集合的顶层接口,有两大子接口List/Set2、Collections是针对于集合操作的工具类,可以对集合进行排序,还有查找(二分查找)public static <T> void sort(List<T> list)public static <T> int binarySearch(List<?> list,T key)public static <T> T max(Collection<?> coll)public static void reverse(List<?> list)public static void shuffle(List<?> list)static <T> List<T> synchronizedList(List<T> list)返回由指定列表支持的同步(线程安全)列表*/
public class CollectionsDemo1 {public static void main(String[] args) {//创建List集合对象ArrayList<Integer> list = new ArrayList<>();//将ArrayList转换成线程安全的集合,返回的集合和原本的是一个存储空间List<Integer> list1 = Collections.synchronizedList(list);
//        System.out.println(list.hashCode());
//        System.out.println(list1.hashCode());//添加元素list1.add(10);list1.add(30);list1.add(20);list1.add(70);list1.add(40);list1.add(50);System.out.println(list);System.out.println("============================================");System.out.println("排序前的集合:"+list);//public static <T> void sort(List<T> list)Collections.sort(list);System.out.println("排序后的集合:"+list);System.out.println("================================================");//排序后的集合:[10,20,30,40,50,70]//public static <T> binarySearch(List<?> list,T key)二分查找前提是有序//二分查找,如果元素存在,返回该元素对应索引System.out.println(Collections.binarySearch(list,70));System.out.println(Collections.binarySearch(list,700));//public static <T> T max(Collection<?> coll)查找最大值System.out.println(Collections.max(list));//public static void reverse(List<?> list)反转Collections.reverse(list);System.out.println(list);//public static void shuffle(List<?> list)随机置换Collections.shuffle(list);System.out.println(list);}
}

----------------------------------------------------------------------------------------------------------------------------

十三、HashMapAndHashtable

package com.shujia.lhw.day20;import java.util.HashMap;
import java.util.Hashtable;/*面试题:HashMap和Hashtable的区别:1、HashMap和Hashtable他们存储的元素都是一个一个的键值对2、HashMap中的key和value允许为null值,而Hashtable不允许3、Hashtable是线程安全的,而HashMap是线程不安全的*/
public class HashMapAndHashtable {public static void main(String[] args) {HashMap<String,String> map1 = new HashMap<>();map1.put(null,"123");map1.put("111",null);map1.put(null,null);System.out.println(map1);Hashtable<String,String> map2 = new Hashtable<>();
//        map2.put(null,"123");//Hashtable元素中的key不允许为null
//        map2.put("111",null);//Hashtable元素中的value不允许为null
//        map2.put(null,null);System.out.println(map2);}
}

----------------------------------------------------------------------------------------------------------------------------

十四、LinkedHashMapDemo

package com.shujia.lhw.day20;import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;/*LinkedHashMap:class LinkedHashMap extends HashMap implements Map{}哈希表和链表实现的Map接口,具有可预测的迭代次序哈希保证的是元素的唯一,保证key是唯一链表保证是有序的(存储和取出的顺序一致)*/
public class LinkedHashMapDemo {public static void main(String[] args) {LinkedHashMap<String,String> map = new LinkedHashMap<>();//向集合中添加元素map.put("1234","hello");map.put("4567","world");map.put("3456","java");map.put("7890","hadoop");map.put("1234","hive");//遍历Set<Map.Entry<String,String>> entries = map.entrySet();for(Map.Entry<String,String> keyValue:entries){String key = keyValue.getKey();String value = keyValue.getValue();System.out.println(key+":"+value);}}
}

-------------------------------------------------------------------------------------------------------------------------------

十五、TreeMapDemo1

package com.shujia.lhw.day20;import java.util.Map;
import java.util.Set;
import java.util.TreeMap;/*TreeMap:键是基于红黑树存储的键:String值:String*/
public class TreeMapDemo1 {public static void main(String[] args) {//1、创建集合对象TreeMap<String,String> map = new TreeMap<>();//创建元素并添加到集合中map.put("hello","你好");map.put("world","世界");map.put("java","面向对象的编程语言");map.put("mysql","结构化数据库");//遍历:Set<Map.Entry<String,String>> entries = map.entrySet();for(Map.Entry<String,String> keyValue:entries){String key = keyValue.getKey();String value = keyValue.getValue();System.out.println(key+":"+value);}}
}

-----------------------------------------------------------------------------------------------------------------------------

十六、TreeMapDemo2

package com.shujia.lhw.day20;import java.util.Comparator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;/*TreeMap<String,String>键:Student键的存储是红黑树存储,可以保证键的排序和唯一值:String*/
public class TreeMapDemo2 {public static void main(String[] args) {//1、创建TreeMap对象
//        TreeMap<Student6,String> map = new TreeMap<>();//推荐使用比较器排序,并且用匿名内部类实现TreeMap<Student6,String> map = new TreeMap<>(new Comparator<Student6>(){@Overridepublic int compare(Student6 o1, Student6 o2) {
//                return 0;//判断年龄是否一样int i = o1.getAge() - o2.getAge();//年龄一样,姓名不一定一样int i2 = i == 0 ? o1.getName().compareTo(o2.getName()):i;return i2;}});//2、创建学生对象Student6 s1 = new Student6("明旺",18);Student6 s2 = new Student6("王宇",19);Student6 s3 = new Student6("周家祥",20);Student6 s4 = new Student6("张保桂",17);Student6 s5 = new Student6("明旺",18);//3、向集合中添加元素map.put(s1,"男枪");map.put(s2,"女警");map.put(s3,"卡特");map.put(s4,"霞");map.put(s5,"男枪");//遍历Set<Map.Entry<Student6,String>> entries = map.entrySet();for(Map.Entry<Student6,String> keyValue : entries){Student6 key = keyValue.getKey();String value = keyValue.getValue();System.out.println(key+":"+value);}}
}
package com.shujia.lhw.day20;public class Student6 implements Comparable<Student6>{private String name;private int age;public Student6() {}public Student6(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student6{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int compareTo(Student6 o) {
//        return 0;//判断年龄是否一样int i = this.age - o.age;//年龄一样,姓名不一定一样int i2 = i == 0 ? this.name.compareTo(o.name):i;return i2;}
}

------------------------------------------------------------------------------------------------------------------------

十七、TreeMapDemo3

package com.shujia.lhw.day20;import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;/*"aababcabcdabcde"获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)分析:1、定义一个字符串(后期可用键盘录入改进)2、定义一个TreeMap对象存储数据键:Character值:Integer3、将字符串转成字符数组4、遍历字符数组,得到每一个字符5、拿着这个字符作为键去map集合中去找,看返回值如果返回值是null,表示集合中没有该字符作为键,就把当前这个字符设置为键,value设置为1如果返回值不是null,说明集合中已经存在这个字符作为键,value值+1,然后重新放入到集合中6、定义一个StringBuffer作为拼接7、遍历集合得到键和值,按照对应的输出格式进行拼接8、把StringBuffer输出输入:aababcabcdabcde输出:a(5)b(4)c(3)d(2)e(1)*/
public class TreeMapDemo3 {public static void main(String[] args) {//定义一个字符串(后期可用字符串改进)Scanner sc = new Scanner(System.in);System.out.println("请输入您要统计的字符串:");String s = sc.next();//定义一个TreeMap对象存储数据TreeMap<Character,Integer> map = new TreeMap<>();//将字符串转成字符数组char[] chars = s.toCharArray();//遍历字符数组,得到每一个字符 增强for循环遍历for(Character ch : chars){//拿着这个字符作为键去Map集合中去找,看返回值get(key)Integer num = map.get(ch);//如果返回值是null,表示该集合中没有该字符作为键,就把当前这个字符设置为键,value设置为1if(num == null){map.put(ch,1);}else{//返回值不是null,说明集合中已经存在该字符作为键,value的值+1,然后重新放入到集合中num++;map.put(ch,num);}}//定义一个StringBuffer作为拼接StringBuffer sb = new StringBuffer();//遍历集合得到键和值,按照对相应的输出格式进行拼接Set<Map.Entry<Character,Integer>> entries = map.entrySet();for (Map.Entry<Character, Integer> keyValue : entries) {Character ch = keyValue.getKey();Integer number = keyValue.getValue();sb.append(ch).append("(").append(number).append(")");}//将StringBuffer转成字符串String result = sb.toString();System.out.println("统计结果为:"+result);}
}

Day20(SetTest,MapDemo,ArrayListAndHashMap,CollectionsDemo,HashMapAndHashtable,LinkedHashMap,TreeMap)相关推荐

  1. JavaSE学习总结(十四)Map集合/Map和Collection的区别/HashMap/LinkedHashMap/TreeMap/集合间的嵌套/Hashtable/Collections工具类

    一.Map集合 我们知道,一个学号就能对应一个学生,并且每个学生的学号都不同,学号就像一个键,对应的学生就是该键对应的值.日常生活中经常能见到这种类似学号对应学生的例子.Java 为了我们更加方便地去 ...

  2. Java基础(适合新学者和架构师阅读)

    近日为了复习CoreJava故自己收集了很多书籍汇编成以下java最核心的内容:参考出处(Java从入门到精通,Java学习手册(app))备注:我不留对别人毫无用处的博文,所以如果对你有用处请评论. ...

  3. 全国(省,直辖市,自治区,特别行政区)映射集合

    package com.wgh.model; import java.sql.Connection; import java.sql.DriverManager; import java.util.L ...

  4. 双非本科小渣渣的字节跳动Android岗面试题分享(已拿offer,分享攒人品~)

    2021年已经开幕了很久,很快就要迎来"金三银四"这个面试高潮.这是简书大佬的一篇面经分享,希望对大家有帮助. 原文地址:https://www.jianshu.com/p/c1c ...

  5. Java工程师培训课(十六【新的领域】)

    夜光序言: 人生最糟的不是失去爱的人,而是因为太爱一个人,而失去了自己. 正文: JDBC入门 1.1 回顾 之前操作mysql数据库: 1)使用mysql客户端工具 2)使用客户端连接mysql服务 ...

  6. Redis五大数据类型与使用场景汇总!!(含完整实战案例,建议收藏)

    本文全面讲述了Redis的五大数据类型和使用场景,含完整实战案例,强烈建议收藏!! 大家好,我是冰河~~ 最近面试跳槽的小伙伴有点多,给我反馈的面试情况更是千差万别,不过很多小伙伴反馈说:面试中的大部 ...

  7. 万年历(计算一年的节假日和工作日)

    万年历(计算一年的节假日和工作日) 1.获取全年节假日日期 2.查询全年时间并分别标记工作日,休息日,补班,周末 3.接口调用(计算剩余一段时间剩余工作日天数) 4.备注 注文: 剩下只有调用输入固定 ...

  8. 小米(实习一面之牛客面经)

    序列化和反序列化 == 与equals方法有什么区别? final在java中有什么作用? Object类有哪些方法 事务四大特性:ACID 事务的隔离级别 数据库的索引原理 Java实现多线程的四种 ...

  9. Java面试高频(多次面试踩过的坑)

    一.JAVA基础 基础知识 基本数据类型 int.byte.short.long.boolean.float.double.char 基本类型 位数 字节 默认值 范围 byte 8 1 0 -128 ...

最新文章

  1. 埃森哲报告:2017年数字化浪潮下的医疗行业五大趋势
  2. Android的目录结构说明
  3. pythond的执行原理_python基础——继承实现的原理
  4. 152.信道划分及其典型应用
  5. 关于浮点数的原理详解
  6. XJTLU Outstanding Student for 2017-2018!
  7. MySQL查看和修改表的存储引擎
  8. 《Java从入门到放弃》JavaSE入门篇:文件操作
  9. C#编程利器之四:委托与事件(Delegate and event) (下)
  10. 7.jenkins 发布邮件
  11. Spring Boot + OAuth2 统一认证SSO单点登录
  12. Android开发中,怎样调用摄像机拍照以及怎样从本地图库中选取照片
  13. 使用Python快速实现人脸融合
  14. 风压和功率计算公式轴流式_离心风机风压计算
  15. 黑猴子的家:Linux VIM 编辑器
  16. windowsGHO镜像系统winXPwin7win8win10正版下载
  17. 通过调试微信小程序示例代码解析flex布局参数功能(一)
  18. 没有独立显卡没有NVIDIA 如何安装pytorch
  19. JVM#Java高墙之内存模型
  20. java计算ip地址

热门文章

  1. 项目总延期?需求乱插队?程序员如何做好项目管理
  2. 99乘法表的C语言实现
  3. 汽车电子产品热评估与散热措施
  4. 经过两天的折腾,我终于写成了我的第一个flutter app程序,差点把我折磨精神崩溃了
  5. c++网络编程——用TCP实现文件传输(windows下基于VS2017)
  6. 数据结构:队列及其应用
  7. 如何不下载软件来制作自己的网站
  8. 前端画图之iphoneSE主屏
  9. 我和学姐的JAVA小故事系列的个人中转站
  10. service中@NotNull的使用