Java之集合

集合的意义(collection)
list叫列表
在这里插入图片描述
当我们想操作一批相同的对象时,我们在方法中传递,总不能一个个传递,就比如我要给你10个篮球,我家距离你家500米,我一定是找个袋子,或者篮子,或者xxxx把篮球装起来,一起给你送过去

  • 用数组不可以吗?
    数组当然可以,但是数组有个问题就是一旦申请空间,大小就固定了,我不见得每次都给你送固定个数的篮球,万一是100个呢,要是100000个呢,数组还有个问题就是空间需连续,我没有这么大的一整块的空间呀
    而集合,可变

  • 集合的方法

在这里插入图片描述

各个集合类的区别

  • List
    • ArrayList: 数组实现,线程不安全,查询速度快
    • LinkedList: 链表结构,增删速度快
  • Set
    • HashSet:线程不安全,存取速度快。那么其唯一性是如何保证的?
    • TreeSet:线程不安全,可以对Set集合中的 元素进行排序。如何保证的顺序?
  • Vector:线程安全,但速度慢,已被 ArrayList替代,不在建议使用

ArrayList和HashSet在封装数据&集合操作用的多

guava,引入包

在这里插入图片描述
在这里插入图片描述
build.gradle

//compile group: 'com.google.guava', name: 'guava', version: '29.0-jre'
    compile ('com.google.guava:guava:29.0-jre')

guava操作都加一个s,Sets等

  • 集合的并集
 Set<String> set1 = new HashSet<>();
        set1.add("a");
        set1.add("b");
        set1.add("c");
        set1.add("d");

        Set<String> set2 = new HashSet<>();
        set2.add("a");
        set2.add("b");
        set2.add("x");
        set2.add("y");

        //集合的并集
        Sets.SetView<String> setView = Sets.union(set1, set2);
        ImmutableSet<String> unionSet = setView.immutableCopy();
        System.out.println("unionSet = " + unionSet);
  • 集合的差集
 Set<String> set1 = new HashSet<>();
        set1.add("a");
        set1.add("b");
        set1.add("c");
        set1.add("d");

        Set<String> set2 = new HashSet<>();
        set2.add("a");
        set2.add("b");
        set2.add("x");
        set2.add("y");

       //集合的差集
        Sets.SetView<String> difference = Sets.difference(set1, set2);
        ImmutableSet<String> strings = difference.immutableCopy();
        System.out.println("strings = " + strings);

  • 集合的交集
Set<String> set1 = new HashSet<>();
        set1.add("a");
        set1.add("b");
        set1.add("c");
        set1.add("d");

        Set<String> set2 = new HashSet<>();
        set2.add("a");
        set2.add("b");
        set2.add("x");
        set2.add("y");
        //集合的交集
        Sets.SetView<String> intersection = Sets.intersection(set1, set2);
        ImmutableSet<String> strings1 = intersection.immutableCopy();
        System.out.println("strings1 = " + strings1);

ps:承载数据用ArrayList;有特殊要求,防重,用HashSet;集合本身做交并处理,用guava提供的类库,操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值