集合之一: Collection体系、ArrayList、 LinkedList

本文介绍了Java集合框架中的Collection接口及其子接口List,深入分析了ArrayList和LinkedList的实现原理与区别。讨论了集合的特点,如无序、无下标,以及ArrayList的查询效率高、增删慢,LinkedList的增删快、查询慢等特性。同时,通过源码分析解释了ArrayList的默认容量、扩容机制以及LinkedList的双向链表结构。
摘要由CSDN通过智能技术生成

1.集合的概念:对象的容器,实现了对对象的操作,类似数组功能

2.集合和数组的区别

(1):数组长度固定,集合长度不固定

(2):数组可以存储基本类型和引用类型,集合只能存储引用类型

Collection体系

在这里插入图片描述

1.Collection父接口

1.特点:代表一组任意类型的对象,无序、无下标、不能重复

2.创建集合:

Collection collecion = new ArrayList();

3.常用方法:

(1).添加元素:collection.add();

(2).删除元素:collection.remove(); 删除

​ collection.clear(); 清空

(3).遍历元素(重点)

  • 使用增强for循环(因为没有下标)
for(Object object : collection){}
  • 使用迭代器

hasNext();有没有下一个元素

next();获取下一个元素

remove();删除当前元素

注意:在迭代过程中是不允许使用collection的删除方法的,比如collection.remove(); 会报并发修改异常。可以使用it.remove();来删除完元素。

(4).判断

collection.contains();是否包含,返回true或者false

collection.isEmpty();是否为空

public class Demo09 {
    public static void main(String[] args) {
        //创建集合
       Collection collection = new ArrayList();
       //添加元素
       collection.add("apple");
       collection.add("peach");
        System.out.println("元素个数:"+collection.size());  //元素个数:2
        System.out.println(collection);   //[apple, peach]
        //删除元素
     //   collection.remove("apple");
    //    System.out.println(collection);   //[peach]
    //    collection.clear();
   //     System.out.println("删除之后:"+collection.size());   //删除之后:0
        //遍历元素的两种方法
        //1.使用增强for
        for (Object object:collection) {
            System.out.println(object);
        }
        //2.使用迭代器
        Iterator it = collection.iterator();
        while (it.hasNext()){
            String s = (String) it.next();  //强制转换
            System.out.println(s);
        }
    }
}

运行结果:

元素个数:2
[apple, peach]
apple
peach
apple
peach

在这里插入图片描述

2.List子接口

(1)特点:有序、有下标、元素可以重复

(2)创建集合对象:

List list = new ArrayList<>();

(3)常用方法

  1. 添加元素:list.add(); 会对基本类型自动装箱
  2. 删除元素:可以用索引 list.remove(); 当删除数字与索引矛盾时,(因为删除的是下标,不是数字,容易引发数组下标越界)。对数字强制转换:list.remove(Object()10) 或list.remove(new Integer)
  3. 遍历
    • 使用for循环
    • 使用增强for
    • 使用迭代器
    • 使用列表迭代器(注意和迭代器的区别)
  4. 获取元素位置:list.indexOf();
  5. 返回子集合:sublist(x,y); 左闭右开 List subList = list.subList(1,3); 返回索引1、2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花落未眠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值