集合框架(Collection集合的功能概述)

  面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类。集合和数组一样是一个容器,可以进行数据的存储,但集合和数组不同的是,集合只能存储引用数据类型,而且集合对数据操作起来比较方便。

一、集合和数组的区别

1. 长度区别

  数组的长度是固定的,而集合的长度是可变的

2. 存储数据类型的区别:

  数组可以存储基本数据类型 , 也可以存储引用数据类型; 而集合只能存储引用数据类型

3.内容区别:

  数组只能存储同种数据类型的元素 ,集合可以存储不同类型的元素

二、Collection集合

  Collection是一个顶层父接口,他的下面有List和Set两个子接口,而实现类在List ( ArrayList、LinkedList、Vector )和Set(hashSet、TreeSet、LinkedHashSet)接口下,所以在使用Collection集合时,需要用多态来创建,格式如下:

Collection collection=new ArrayList();
Collection collection=new Vector();

  使用Collection集合我们可以对元素进行增删,判断等功能。但是在使用前,我们需要创建它的实例化对象,使用方法如下:

1.添加功能
  • boolean add(E e) :向集合中添加对象。

  • boolean addAll(Collection c) :将一个集合中的所有元素添加到另一个集合中。

2.删除功能
  • void clear():移除集合中的所有元素。
  • boolean remove(Object o):移除集合中的一个元素。
  • boolean removeAll(Collection c):移出一个集合中与c集合的交集元素,c集合中的元素不变。如果删除成功返回true,否则为false。
3.判断功能
  • boolean contains(Object o):判断集合中是否包含该指定的元素 。
  • boolean containsAll(Collection c):判断一个集合是否是另一个集合的子集,如果是返回 true 否者为false。
  • boolean isEmpty():判断集合是否为空。
4.获取功能

  集合中可以通过 for 循环进行遍历每个元素,也可以通过迭代器(Iterator)进行获取每个元素。迭代器中有两个方法:

  1. boolean hasNext ():如果仍有元素可以迭代,则返回 true。
  2. E next ():返回迭代的下一个元素

  这两个方法配合使用可以获取集合中的每个元素,使用方式如下:

public class MyTest {
    public static void main(String[] args) {
        Collection collection1 = new ArrayList();
        collection1.add("张三");
        collection1.add("李四");
        collection1.add(56); 
        //获取一个迭代器
        Iterator iterator = collection1.iterator();
        System.out.println(iterator);
        while (iterator.hasNext()){
            Object obj = iterator.next();
            System.out.println(obj);
        }
  • boolean retainAll(Collection c):获取两个集合的交集元素。
  • int size():获取集合中元素的个数与数组的 length() 类似。
5.转换功能
  • Object[] toArray():通过这个方法把集合转换为数组。

三、List集合

List 是Collection集合的子接口,它拥有自己特有的一些功能:

  1. void add(int index,E element): 在指定索引处添加元素
  2. E remove(int index):移除指定索引处的元素,返回被移除的元素。
  3. E get(int index):获取指定索引处的元素
  4. E set(int index,E element):更改指定索引处的元素 返回的而是被替换的元素

  List集合中有自己迭代器(ListIterator ),使用方法和 Iterator 一样。有时候在我们使用迭代器遍历集合中的元素时,会发生报错 ConcurrentModificationException (并发修改异常),原因是我们的迭代依赖于集合,当我们向集合中添加好了元素之后 获取迭代器时,此时迭代器已经自动计算出了元素的个数 ,然后这个时候我们在遍历的时候又突然想向集合里面加一个元素(用的是集合的add方法)那么迭代器就无法处理,所有就报错。
  要解决这个问题我们就需要使用迭代器自带的 add() 方法 (ListIterator的特有功能add),或者使用 for循环遍历,然后添加元素。

List的三个子类的特点(ArrayList,Vector,LinkedList)
  1. ArrayList:
    底层数据结构是数组,查询快,增删慢。
    线程不安全,效率高。
  2. Vector:
    底层数据结构是数组,查询快,增删慢。
    线程安全,效率低。
  3. LinkedList:
    底层数据结构是链表,查询慢,增删快。
    线程不安全,效率高。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值