练习--计算一个字符串每个字符出现的次数和JDK9对集合添加的优化-of方法
作者:互联网
练习--计算一个字符串每个字符出现的次数
需求∶
计算一个字符串中每个字符出现次数。
分析:
1.获取一个字符串对象
2.创建一个Map集合,键代表字符,值代表次数。
3.遍历字符串得到每个字符。
4.判断Map中是否有该键。
5.如果没有,第一次出现,存储次数为1;如果有,则说明已经出现过,获取到对应的值进行++,再次存储。
6.打印最终结果
public static void main(String[] args) { //1.使用scanner获取用户输入的字符串 Scanner sc = new Scanner(System.in); System.out.println("请输入一个字符串:"); String str = sc.next(); //2.创建Map集合, key是字符串中的字符, vaLue是字符的个数 HashMap<Character,Integer> map = new HashMap<>(); //3.遍历字符串,获取每一个字符 for( char c : str.toCharArray()){ //4.使用获取到的字符,去Map集合判断key是否存在 if( map.containsKey(c)){ Integer value = map.get(c); value++; map.put( c ,value) ; }else{ // key不存在 map.put(c,1); } } //遍历Nap集合,输出结果 for(Character key :map.keySet()){ Integer value = map.get(key ) ; System.out.println( key+"= "+value); } }
JDK9对集合添加的优化-of方法
通常,我们在代码中创建一个集合(例如,List或Set ),并直接用一些元素填充它。实例化集合,几个add方法调用,使得代码重复。
JDK9的新特性︰
List接口, Set接口,Map接口:里边增加了一个静态的方法of,可以给集合一次性添加多个元素
static <E> List<E>of (E... eLements)
使用前提:
当集合中存储的元素的个数已经确定了,不在改变时使用
注意:
1.of方法只适用于List接口,set接口,Map接口,不适用于接接口的实现类
2.of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常
3.Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常
public static void main(String[] args) { List<String> list = List.of("a","b","a", "c","d"); System.out.println( list);//[a, b, a, c, d] //list.add( "w"); // UnsupportedoperationException:不支持操作异常 //Set<String> set = Set.of(" a", "b", "a" , "c " , "d");//ILLegaLArgumentExcepti Set<String> set = Set.of( "a", "b", "c", "d" ); System.out.println(set) ; //set.add("w" ) ; // UnsupportedOperationException:不支持操作异常 // Map<String, Integer> map = Map.of("张三",18,"李四",19,"王五",20,"张三", Map<String,Integer> map = Map.of( "张三", 18,"李四",19,"王五",20); System.out.println(map); map.put("赵四" , 30); //UnsupportedOperationException:不支持操作异常 }
public static void main(String[] args) { //strSet.add("c");这里编译的时候不会错,但是执行的时候会报错, // 因为它是不可变的集合 Set<String> strSet = Set.of("a", "b", "c"); System.out.println(strSet); Map<String,Integer> strMap = Map.of("a",1, "b",2); System.out.println(strMap); List<String> strList = List.of("a","b"); System.out.println(strList); }
标签:map,Set,Map,--,System,集合,JDK9,字符串,println 来源: https://www.cnblogs.com/yuzong/p/16452290.html