【Java 入门 Day19】 集合篇(上):List 接口,Java 里的 “排队神器”!
·
家人们谁懂啊!Java 里的集合简直是新手的 “大型迷宫”,每次写代码碰到ArrayList、LinkedList,都像在玩 “找不同”,分不清谁快谁慢、谁该用在哪。今天咱们先从 List 接口唠起,把这个 “排队神器” 扒得明明白白,看完保证你再也不被它们搞心态!
一、集合是什么?Java 里的 “万能收纳盒”
集合,说白了就是 Java 里的万能收纳盒,用来存储数量不等的对象,比数组灵活多了 —— 数组长度固定,集合能自动扩容,还自带各种增删改查的方法,开发里写代码天天用。
- 集合的相关接口和类,都在
java.util包里,咱们主要从四个点学:集合接口的特点、核心方法、实现类、遍历方式。
二、Collection 接口:所有集合的 “老祖宗”
Collection接口是所有单列集合的父接口,堪称集合界的 “老祖宗”,它的子接口主要有两个:List和Set。
- 核心方法开发高频用,给你划重点:
add(Object o):把对象加到集合里,相当于 “往收纳盒里塞东西”。contains(Object o):判断集合里有没有这个对象,相当于 “找收纳盒里有没有这个东西”。remove(Object o):把对象从集合里删掉,相当于 “把东西从收纳盒里拿出来扔掉”。size():获取集合里元素的个数,相当于 “数收纳盒里有多少东西”。
三、List 接口:有序可重复的 “排队神器”
List接口是Collection的子接口,堪称 Java 里的排队神器,特点超明显:
- 有序:元素按添加顺序排列,有下标,就像排队一样,先来的在前,后来的在后。
- 可重复:允许元素重复,就像排队可以有人插队(重复)。
- 下标范围:
0 ~ size()-1,和数组一样。
1. List 接口的核心方法,开发必背
除了继承父接口的方法,List 还有自己的 “专属技能”:
add(int index, Object o):把元素插到指定下标位置,相当于 “插队”。get(int index):根据下标拿元素,相当于 “按排队号找人”。remove(int index):删除指定下标的元素,相当于 “把指定位置的人移出队伍”,返回被删掉的元素。set(int index, Object o):修改指定下标的元素,相当于 “把队伍里的人换掉”,返回被修改之前的元素。
2. List 的三大实现类,面试必背区别!
List 接口有三个常用实现类:ArrayList、Vector、LinkedList,它们的底层实现不一样,用法场景也完全不同,给你唠明白:
(1)ArrayList:底层数组实现的 “排队快取神器”
ArrayList是开发里最常用的 List 实现类,底层是数组实现的,特点:
- 查询快、增删慢:就像排队,按号找人(查询)一秒到位,但要在中间插人、删人(增删),后面的人都得挪位置,效率低。
- JDK2.0 版本,线程不安全,运行效率高。
- 扩容机制:JDK1.7 版本创建对象时,不会直接分配数组空间,第一次
add元素时才分配,初始长度 10,每次扩容 1.5 倍。
(2)Vector:ArrayList 的 “老大哥”,线程安全但慢
Vector和ArrayList底层一样是数组,但它是 JDK1.0 版本的老古董:
- 线程安全,但效率低,就像排队时每操作一步都要锁门,别人不能动,虽然安全但慢得要死。
- 现在开发里基本不用了,除非是老项目维护。
(3)LinkedList:底层链表实现的 “排队增删神器”
LinkedList底层是双向链表实现的,特点和 ArrayList 正好相反:
- 查询慢、增删快:就像排队,按号找人得从头数(查询慢),但要在中间插人、删人,只需要改一下前后人的 “手拉手”,效率超高。
- 线程不安全,运行效率高。
面试题:ArrayList 和 LinkedList 的区别?
3. List 的三种遍历方式,开发常用!
List 的遍历方式主要有三种,给你唠明白:
- 下标遍历:通过下标
for循环遍历,用get(i)拿元素:java运行
for(int i=0; i<list.size(); i++){ Object obj = list.get(i); } - forEach 遍历(增强 for 循环):开发里最常用的,底层原理是迭代器遍历:
java运行
for(Object obj : list){ // 直接操作obj就行 } - 迭代器遍历:手动用
Iterator遍历:java运行
Iterator it = list.iterator(); while(it.hasNext()){ Object obj = it.next(); }
今天先唠到这,List 接口和它的三大实现类的套路你 get 到了吗?下一篇咱们继续唠泛型和 Collections 工具类,还有 Set 接口,这些开发里的 “集合坑”,看完你就再也不会踩了!
更多推荐

所有评论(0)