java为何提供各种各样的集合类?

当我们在存储一组相同类型的数据时 , 首先会想到使用数组

但如果这组数据长度不明 , 并且不满足数组这样的存储结构时,我们该怎么办呢

数组的缺点 : 长度一旦给定 , 就不能再变化

所以在这种条件下 ,java定义了很多集合类来供我们使用 ,这些集合类实现了各种数据结构 , 可以满足我们存储数据的各种要求(例如数据是动态增长等 )

下面介绍集合的体系

认识Collection 和 Map接口

Collection接口有两个子接口 , List Set , 它们都是单列, 也就是说只能存储一列数据 ,而Map接口中的实现类都是双列, 一列是键,一列是值 , 键和值是映射关系

List接口的实现类都时可以存放重复元素的 ,而Set接口的实现类则不能存放重复的元素,它里面的元素也都是无序的

List 接口其中的两个实现类 ArrayList LinkedList , 其中ArrayList底层采用数组实现 , 优点是查找元素快, 而LinkedList底层则是链表实现,增删则比较快(关于各种实现类后面在文章中会细说)

接着来看Collection接口里定义的一些方法

boolean add(Object element);                                   //添加一个数据
boolean addAll(Collection c);                                     //添加一个集合
boolean remove(Object element);                             //删除所有匹配的数据
boolean removeAll(Collection c);                               // 删除指定集合 不包含时 , 删除相交的元素
void clear();                                                                //清空集合
int size();                                                                    //获得集合的长度
boolean isEmpty();                                                     //判断集合是否为空
boolean contains(Object element);                            //是否包含指定元素
boolean containsAll(Collection c);                              //是否包含指定集合
boolean retainAll(Collection c);                                // 求交集 , 集合数据发生变化返回 true,不变false
部分方法示例如下 :
  Collection<Integer> c1 = new ArrayList<>();
  Collection<Integer> c2 = new ArrayList<>();
      for (int i = 0; i < 10; i++) {    //向集合添加数据
          if (i < 5){
            c2.add(i);
          }
            c1.add(i);
      }
  c1.addAll(c2);            //添加一个集合
  System.out.println(c1);
  boolean b = c1.containsAll(c2);   //是否存在指定集合
  System.out.println(b);
  c1.removeAll(c2);              //删除匹配所有集合
  System.out.println(c1);
  c1.retainAll(c2);         //求两个集合的交集,存到c1中
  System.out.println(c1);

结果 :

Map 接口详细使用将会在后续 HashMap等实现类中提到

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值