Java集合Set 集合、List和Collections类( 三 )
注意\color{red}{注意}注意:操作索引的时候一定要放置索引越界异常 。
3.3、List 接口的子类3.3.1、ArrayList 集合ArrayList 集合的底层数据结构是数组结构 , 其特点是元素增删慢 , 查询快 , 由于日常开发中使用最多的功能就算查询数据 , 所以 ArrayList 是最常用的集合 。 但是呢 , 我们不能在开发中随意的使用 ArrayList 完成任何需求 , 只有当 ArrayList 适合我们的开发需求时(查询多 , 增删少) , 我们才去使用它 。
3.3.2、LinkedList 集合LinkedList 集合的底层数据结构是链表结构 , 其特点是元素增删快 , 查询慢 , 但是链表结构的首尾元素查找速度跟数组的查找是一样快的 , 所以 LinkedList 中包含了大量操作首尾元素的方法 。 所以当我们需要实现的需求增删操作很多 , 查询很少或者查询很多但都是查询手尾的时候 , 我们就可以使用 LinkedList 集合 。
LinkedList 集合操作首尾元素方法代码演示如下所示:
public class LinkedListDemo02 {public static void main(String[] args) {// show01();// show02();show03();}// 增加元素private static void show01() {// 创建LinkedList集合对象LinkedList linkedList = new LinkedList<>();linkedList.add("a");linkedList.add("b");linkedList.add("c");System.out.println(linkedList);// addFirst()linkedList.addFirst("www");System.out.println(linkedList);// push() 等效于 addFirst()linkedList.push("ccc");System.out.println(linkedList);// addLast() 等效于 add()linkedList.addLast("com");System.out.println(linkedList);}// 获取元素private static void show02() {// 创建LinkedList集合对象LinkedList linkedList = new LinkedList<>();linkedList.add("a");linkedList.add("b");linkedList.add("c");System.out.println(linkedList);if (!linkedList.isEmpty()) {String first = linkedList.getFirst();System.out.println(first);String last = linkedList.getLast();System.out.println(last);}}// 移除元素private static void show03() {// 创建LinkedList集合对象LinkedList linkedList = new LinkedList<>();linkedList.add("a");linkedList.add("b");linkedList.add("c");System.out.println(linkedList);// pop() 相当于 removeFirst()String first = linkedList.removeFirst();System.out.println(first);String last = linkedList.removeLast();System.out.println(last);System.out.println(linkedList);}}复制代码
3.3.3、Vector 集合Vector 集合的底层数据结构也是数组结构 , 但是与List和LinkedList 不同的是 , Vector 集合是单线程的 , 速度慢 , 目前已经被 ArrayList 所取代 。
四、Collections 集合工具类4.1、常用功能Collections 是集合工具类 , 用来对集合进行操作 , 部分方法如下:
- public static <泛型> boolean addAll(Collections, c, T...elements):往集合中添加一些元素 。
- public static void shuffle(List> list):打乱集合顺序 。
- public static <泛型> void sort(List> list):将集合中元素按照默认规则排序 。
- public static <泛型> void sort(List> list, Comparator super T>):将集合中元素按照指定规则排序 。
sort(List> list) 方法代码演示如下所示:
public class CollectionsDemo01 {public static void main(String[] args) {ArrayList list = new ArrayList<>();list.add(new Student("张三", 18));list.add(new Student("李四", 20));list.add(new Student("王五", 15));System.out.println(list);Collections.sort(list);System.out.println(list);}static class Student implements Comparable {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int compareTo(Student o) {// 自定义比较规则// 比较两个人的年龄return this.getAge() - o.getAge();// 按照年龄升序//return o.getAge() - this.getAge();// 按照年龄降序}}}复制代码
4.3、sort(list, Comparator) 方法Comparator 和 Comparable 的区别:- Comparable 是排序接口 , 若一个类实现了 Comparable 接口 , 就意味着“该类支持排序” 。
- Comparator 是比较器 , 我们若需要控制某个类的次序 , 可以建立一个“该类的比较器”来进行排序 。
- Comparable 相当于“内部比较器” , 而 Comparator 相当于“外部比较器” 。
sort(list, Comparator) 方法代码演示如下所示:
- 现状|程序员现状揭秘:平均年薪20.36万,Java人才需求量最大
- 程序员学英语第1天——JavaScript 程序测试的介绍1
- 三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经
- 《深入理解Java虚拟机》:对象创建、布局和访问全过程
- java面试题整理
- Kotlin集合vs Kotlin序列与Java流
- Java安全之Javassist动态编程
- 推荐Java工程师必看,12个Hadoop领域的上手项目
- 震惊!京东T4大佬面试整整三个月,才写了两份java面试笔记
- 整理:常见的Java开发框架有哪些,看过,就赶紧收藏吧