首先,讲一下list和set之间的相似性,list和set都是单列集合,他们有一个共同的父接口---collection。list是依次列出一个结合中的所有的元素,若集合中有重复的,同样列出,有序;set列出的集合中是不允许有重复的,也就是说里面有一个A对象和一个B对象,若是A.equals(B)==ture,那么用set方法列出的只会有一个,set集合默认是有序的,正向排序。一般遍历set里面的元素时使用iterator
map<key,value> 它是一个双列的集合。里面有一个key,和一个value,其中value是真正存储值得变量。map存储的数据是无序的,其键(key)不能重复,但是其值(value)是可以重复的。
下面我们看一个例子来看看他们之间的区别:
- public class ListAndSetTest {
- /**
- * @param args
- */
- String string[]={"i","am","xiao","huang"};
- public void listtest(){
- List<String> list=new ArrayList<String>();
- for(String s:string){
- list.add(s);
- }
- for(int i=0;i<list.size();i++)
- {
- System.out.println("list的结果是:"+list.get(i));
- }
- }
- public void settest(){
- Set<String> set=new HashSet<String>();
- for(String s:string){
- set.add(s);
- }
- Iterator iterator=set.iterator();
- while(iterator.hasNext()){
- System.out.println("set的输出结果是:"+iterator.next());
- }
- }
- public static void main(String[] args) {
- new ListAndSetTest().listtest();
- new ListAndSetTest().settest();
- }
- }
首先定义一个字符串类型的数组,分别用list和set方法依次取出数组中的值,然后打印出来
结果如下:
- list的结果是:i
- list的结果是:am
- list的结果是:xiao
- list的结果是:huang
- set的输出结果是:am
- set的输出结果是:xiao
- set的输出结果是:huang
- set的输出结果是:i
下面是map的示例:
- public void maptest(){
- Map<Integer, String> map=new HashMap<Integer, String>();
- for(String s:string){
- map.put(s.length(), s);
- System.out.println("map的输出结果是:"+map.get(s.length()));
- }
- }
这里写程序的时候要注意一个问题,就是来给string数组赋值的时候一定要保证每一个的长度都是不一样的,因为map中的key要求是不同。
结果如下:
- map的输出结果是:i
- map的输出结果是:am
- map的输出结果是:xiao
- map的输出结果是:huang