一段代码搞懂关于Java中List、Set集合及Map的使用
Java中List、Set集合及Map的使用代码如下所示:
packagetingjizifu; importjava.util.*; publicclassTongJi{ /* *使用Scanner从控制台读取一个字符串,统计字符串中每个字符出现的次数,要求使用学习过的知识完成以上要求 *实现思路根据Set、List、Map集合的特性完成。 */ publicstaticvoidmain(String[]args){ //输入字符串 Scannerinput=newScanner(System.in); StringshuRu=input.next(); //把字符串字符装入List集合 List<String>list=newArrayList<String>(); for(inti=0;i<shuRu.length();i++){ list.add(String.valueOf(shuRu.charAt(i))); } //把字符串字符装入Set集合 Set<String>set=newHashSet<String>(); for(inti=0;i<shuRu.length();i++){ set.add(String.valueOf(shuRu.charAt(i))); } //用Set中的字符与List中的字符进行比较,相同就加1进行计数, //然后把Set集合中的字符作为键(key),统计的数作为值(value),最后打印出Map中的数据 Map<String,Integer>map=newHashMap<String,Integer>(); for(Stringstr:set){ intsum=0; //System.out.println(str); for(inti=0;i<list.size();i++){ if(list.get(i).equals(str)){ sum++; } } map.put(str,sum); } Set<String>ss=map.keySet(); for(Stringstr:ss){ System.out.println(str+"出现次数为"+map.get(str)+"次"); } input.close(); } }
下面看下setmaplist的区别
都是集合接口
set--其中的值不允许重复,无序的数据结构
list --其中的值允许重复,因为其为有序的数据结构
map--成对的数据结构,健值必须具有唯一性(键不能同,否则值替换)
List按对象进入的顺序保存对象,不做排序或编辑操作。
Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。
Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用LinkedHashSet或者LinkedHashMap.
Collection是对象集合,Collection有两个子接口List和Set
List可以通过下标(1,2..)来取得值,值可以重复
而Set只能通过游标来取值,并且值是不能重复的
ArrayList,Vector,LinkedList是List的实现类
ArrayList是线程不安全的,Vector是线程安全的,这两个类底层都是由数组实现的
LinkedList是线程不安全的,底层是由链表实现的
Map是键值对集合
HashTable和HashMap是Map的实现类
HashTable是线程安全的,不能存储null值
HashMap不是线程安全的,可以存储null值
以上所述是小编给大家介绍的关于Java中List、Set集合及Map的使用知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!