list、set和map的区别

引言   

       在看ssh视频的时候涉及到了map、list和set。现在来总结一下它们三个。

       首先我们来介绍一下Collection接口。

Collection接口

   Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。

  所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。

  如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:

    Iterator it = collection.iterator(); // 获得一个迭代子

    while(it.hasNext()) {

      Object obj = it.next(); // 得到下一个元素

    }

           由Collection接口派生的两个接口是List和Set。

List接口

         List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。

set接口

          Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。

          很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。

实例

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

//import java.util.Iterator<String>;



public class ListAndSetTest {
	/** 
     * @param args 
     */  
    String string[]={"i","am","xing","yu"};  
    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=(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都是单列集合,他们有一个共同的父接口---collection。list是依次列出一个集合中的所有的元素,若集合中有重复的,同样列出,有序;set列出的集合中是不允许有重复的,也就是说里面有一个A对象和一个B对象,若是A.equals(B)==ture,那么用set方法列出的只会有一个,set集合默认是有序的,正向排序。

Map 接口

         Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。Map<key,value> 它是一个双列的集合。里面有一个key,和一个value,其中value是真正存储值得变量。Map存储的数据是无序的,其键(key)不能重复,但是其值(value)是可以重复的。

实例

package maptest;
import java.util.HashMap;
import java.util.Map;


public class maptest {
	public static void main(String[] args) {
		maptest();
	}
	
	public static void maptest(){  
		String string[]={"i","am","xing","yu"};  
        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()));  
        }      
    }
	
<div style="text-align: center;"><span style="font-family: Arial, Helvetica, sans-serif;">}</span></div>

总结

       遇到这些不知道的名词一定要查一下,如果有相似的那就对比一下吧,会有更多的发现!


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 38
    评论
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值