一段代码搞懂关于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的使用知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!