package three; import java.util.ArrayList; import java.util.LinkedList; /** * 介绍ArrayList 和 LinkedList的简单操作,由于Collection 和 List 中已经包含了的大多数的操作,这些操作ArrayList * 和 LinkedList也可以使用, 所以下面仅介绍二者独有的操作。 * ArrayList: implements List * 底层原理:数组实现, 每增加一个元素,都哟啊复制到一个新数组中,所以增删慢,但是数组查询快 * 注意:此实现是不同步的,一个同步实现是这样的,用Collections.synchronizedList方法’包装‘ * List list = Collections.synchronizedList(new ArrayList()); 详情查看API * 其他补充方法: * Object clone() 返回实例的浅拷贝 * void forEach(Consumer<? super E> action) 对每个元素执行给定的操作 * void replaceAll(UnaryOperator<E> operator) 将该列表的每个元素替换为将该运算符应用于该元素的结果。 * List<E> subList(int fromIndex, int toIndex) 返沪此列表中下标指定范围的子视图结果 * void trimToSize() 修改这个ArrayList实例的容量是当前列表的当前大小 *LinkedList: * 通过链表实现,查找慢,增删快 * 里面包含了大量操作首尾元素的方法 * void addFirst(E e)添加到开头 * void push(E e) 添加到开头 * * void add() 添加到末尾 * void addLase() 添加到末尾 * * getFirst() 获取 * getLast() * * removeFirst() * pop() 相当于清除第一个,removeFirst() * * removeLast() * * peek() 仅仅检索 第一个元素 <检索就是查看的意思, 有返回值,返回值就是要检索的元素> * poll() 检索并且删除第一个 <检索就是查看的意思, 有返回值,返回值就是要检索的元素> * */ public class ArrayListAndLinkedList { public static void main(String[] args) { // 创建集合以及初始的添加元素操作 ArrayList<Integer> list = new ArrayList<>(); list.add(12); list.add(78); list.add(8); list.add(-5); list.add(9); list.add(17); list.add(23); for (Integer integer : list) { System.out.print(integer + " "); } // 12 78 8 -5 9 17 23 System.out.println("--------------------------------"); // Object clone() 返回实例的浅拷贝 Object lcp = list.clone(); System.out.println(lcp); // [12, 78, 8, -5, 9, 17, 23] // void forEach(Consumer<? super E> action) 对每个元素执行给定的操作 list.forEach(item -> System.out.print(item + " ")); // 12 78 8 -5 9 17 23 // void replaceAll(UnaryOperator<E> operator) 将该列表的每个元素替换为将该运算符应用于该元素的结果。 // 用每个元素+1替换原来的元素 list.replaceAll(item -> item + 1);list.forEach(item -> System.out.print(item + " ")); // 13 79 9 -4 10 18 24 System.out.println("--------------------------------------------------"); // 创建LinkedList 对象 LinkedList<String> llt = new LinkedList<>(); llt.add("Zdrom"); llt.add("Drom"); llt.addLast("Tom"); llt.push("First"); // 用push添加到开头 llt.add("Udrom"); llt.add("Pgom"); llt.add("Kwn"); System.out.println(llt); // [First, Zdrom, Drom, Tom, Udrom, Pgom, Kwn] System.out.println(llt.getFirst()); // First String first = llt.peek(); // First 仅检索,不做修改 System.out.println(first); String first2 = llt.poll(); // 查看第一个,但是同时会删除第一个 System.out.println(first2); // First System.out.println(llt); // [Zdrom, Drom, Tom, Udrom, Pgom, Kwn] } }
集合实现类
最新推荐文章于 2022-07-12 09:19:07 发布
本文详细介绍了ArrayList和LinkedList两种Java集合类的区别与操作,包括它们的底层实现原理、特有的增删查改方法以及一些实用的扩展操作,如克隆、遍历、替换等。ArrayList基于数组实现,查询快但增删慢,而LinkedList则通过链表实现,增删快但查询慢。此外,还展示了如何在实际代码中使用这两个类进行元素操作。
摘要由CSDN通过智能技术生成