集合实现类

本文详细介绍了ArrayList和LinkedList两种Java集合类的区别与操作,包括它们的底层实现原理、特有的增删查改方法以及一些实用的扩展操作,如克隆、遍历、替换等。ArrayList基于数组实现,查询快但增删慢,而LinkedList则通过链表实现,增删快但查询慢。此外,还展示了如何在实际代码中使用这两个类进行元素操作。
摘要由CSDN通过智能技术生成
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]
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值