十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Java 集合|Collection、List、ArrayList、LinkedList、泛型、Collections 工具类

Java 集合|Collection、List、ArrayList、LinkedList、泛型、Collections 工具类 一、集合概念集合是容器工具用于存储数量不等的多个对象。集合相关接口、类全部位于java.util包下。学习集合四个核心角度集合接口的特点集合接口的功能方法集合接口对应的实现类集合的遍历方式二、Collection 集合体系2.1 Collection 父接口特点可以存储任意Object类型对象。常用方法表格方法说明boolean add(Object o)向集合添加对象boolean contains(Object o)判断集合是否包含该元素返回 true/falseboolean remove(Object o)移除集合中的指定对象int size()获取集合有效元素个数Collection 没有直接实现类功能由子接口实现。2.2 List 子接口特点存储 Object 对象有序、带下标、允许元素重复下标范围0 ~ size()-1List 继承 Collection 全部方法额外扩展方法表格方法说明add(int index,Object o)在指定下标位置插入元素Object get(int index)根据下标获取元素Object remove(int index)根据下标删除元素返回被删除对象Object set(int index,Object o)修改指定下标元素返回修改前旧元素List subList(int fromIndex,int toIndex)截取集合左包含、右不包含[fromIndex, toIndex‑1]2.3 List 实现类1. ArrayList底层数组实现JDK7创建对象不会初始化底层数组第一次执行add()才初始化数组初始容量默认10扩容按照1.5 倍扩容。特性查询效率高中间插入、删除元素效率低线程不安全执行效率高。适用场景大量做末尾添加、查询操作。2. Vector底层数组实现JDK1.0线程安全效率较低查询快中间增删慢。3. LinkedList底层双向链表实现查询遍历效率低中间位置增删元素效率高线程不安全效率高。✨面试题ArrayList 和 LinkedList 的区别ArrayList 底层数组查询快中间插入删除慢1.5 倍扩容线程不安全。LinkedList 底层双向链表查询慢中间增删效率高没有扩容机制线程不安全。2.4 List 集合三种遍历方式① 下标 for 遍历for(int i 0 ; i list.size() ; i){ Object obj list.get(i); }② for‑each 增强 for 循环开发常用for‑each 底层本质是迭代器for(Object obj : list){ //操作obj }③ Iterator 迭代器遍历//获取迭代器对象 IteratorString it list.iterator(); while(it.hasNext()){ //hasNext() 判断游标右侧是否还有元素 String str it.next(); //next()取出下一个元素无元素会抛出 NoSuchElementException System.out.println(str); }注意迭代器游标初始位于所有元素最左侧调用next()之前必须先用hasNext()判断。2.5 泛型1泛型集合作用约束集合存储类型保证数据类型安全集合元素类型统一。//完整写法 ListString list new ArrayListString(); //JDK7之后菱形语法简写 ListString list new ArrayList();泛型只能写引用类型如果需要基本类型使用对应的包装类。不指定泛型默认泛型为Object。2自定义泛型类泛型标识一般使用单个大写字母T、K、V、E//定义泛型类 class DemoT{ //T就当作一种数据类型使用 private T data; } //创建对象时指定泛型真实类型 DemoString demo new Demo();JDK5 之后泛型也可以定义在接口上。使用泛型让代码更加通用灵活多用于通用工具类、底层框架开发。2.6 Collections 工具类java.util.Collections集合工具类全部为静态方法直接类名调用。表格静态方法说明Collections.reverse(List list)集合元素反转Collections.shuffle(List list)集合元素随机打乱Collections.sort(List list)集合排序排序注意点如果集合存放自定义对象实体类需要实现Comparable接口重写compareTo()方法定义排序规则 ——内置比较器。List 自带sort(Comparator c)方法可以传入Comparator接口匿名内部类 / Lambda实现排序 ——外置比较器。✨面试题集合实现排序使用Collections.sort(list)集合存放自定义实体类方式一实体实现Comparable重写compareTo内置比较器方式二调用 list.sort (Comparator) 传入外置比较器匿名内部类 / Lambda。
返回列表