java集合

           java的集合的作用是用来操作和存储对象组,他们对于基础集合的实现非常高效,具有高度的互操作性,并且具有良好的可扩展性和适应性。java集合的类型包括两种,一种是存储单个对象的集合Collection,另一种是以键值对方式存储对象的Map,Collection有三种类型,包括List、Set和Queue,java集合类型都是实现这三个接口的,目的是为了用不同的方式去操作集合对象,其中常用的集合类型有:ArrayList、LinkList,HashSet、LinkHashSet、HashMap和LinkHashMap。

 

集合接口

     java集合中常用的接口是List、Set和Map,这里给出各个接口的描述

     

Collection

Collection接口是集合中最基本的集合,它代表着一组对象

Collection存储的是一组无序的,不唯一的对象

List

List集合是一个有序的集合对象,他可以对其中的对象进行精准的位置访问和插入操作,利用和数组下表类似的方法可以索引到其中的元素,和数组一样从0开始。

List集合存储的是一组有序的,不唯一的对象

Set

Set集合是一个无序的对象集合,其中的对象元素不允许重复

Set集合存储的是一组无序的,唯一的对象

SortedSetSortedSet是Set的补充,存储的是有序的对象
MapMap是以键值对方式存储对象的集合,其中健的值不可以重复
SortedMapSortedMap是Map的补充,存储的是由key升序排列的对象
Map.EntryMap集合的内部类,代表着Map中的一个元素,也就是一个键值对

List和Set的区别

    List和Set接口是java中使用最广泛的单对象集合,他们有各自的优缺点:

       1、Set集合存储的是无序的、不可以重复的对象组,List存储的是有序的(位置上有序,1、2、3....),可以重复的对象组

       2、Set在插入和遍历的时间都是逊色于List(网上很多说是Set插入的速度会比List快,但是这是我自己试过,如果硬是要说Set比List快,应该是在集合中间插入数据,因为每次插入,List的数据都会往后移动而产生额外的操作,但是如果直接往集合使用add()方法,List确实要比Set快),所以说不管是哪一种说法都不对,主要还是看情景。把ArrayList换成LinkList结果是一样的,也是比Set快,但是时间上稍有不懂,主要是List的实现方式是数组还是链表的方式,这里暂时不做详细解释。

 public static void main(String[] args) {
        List list=new ArrayList();
        Set set =new HashSet();
        long lt1=System.currentTimeMillis();
        for(int i=0;i<1000000;i++){//往List集合插入一百万调数据
        	list.add(i);
        }
        System.out.println("list插入时间:"+(System.currentTimeMillis()-lt1));
        long st1=System.currentTimeMillis();
        for(int i=0;i<1000000;i++){//往Set集合插入一百万数据
        	set.add(i);
        }
        System.out.println("set插入时间:"+(System.currentTimeMillis()-st1));
       
        int sumSet=0;
        long s1=System.currentTimeMillis();
        for (Object object : set) {//遍历Set集合
			if(Integer.parseInt(object.toString())%2==0){
				sumSet+=Integer.parseInt(object.toString());
			}
		}
        
        System.out.println("set遍历时间:"+(System.currentTimeMillis()-s1));
        int sumList=0;
        long l1=System.currentTimeMillis();
        for(Object obj:list){//遍历List集合
        	if(Integer.parseInt(obj.toString())%2!=0){
				sumList+=Integer.parseInt(obj.toString());
			}
        }
        System.out.println("list遍历时间:"+(System.currentTimeMillis()-l1));
    }

   上面代码的运行结果是

    list插入时间:20
    set插入时间:104
    set遍历时间:572
    list遍历时间:81

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值