面试题:Java里面的List的各种类型

面试题:Java里面的List的各种类型

在Java的丰富类库中,List是一个常用的接口,它定义了一种有序的集合,允许元素重复。下面简要介绍几种常见的List实现和它们的底层实现原理:

  1. ArrayList(数组列表):

    • 底层实现原理: 使用数组实现,当元素数量超过数组大小时,会动态扩展数组。
    • 特点: 随机访问速度快,但在插入和删除操作上相对较慢。
  2. LinkedList(链表):

    • 底层实现原理: 使用双向链表实现,每个元素都包含对前一个和后一个元素的引用。
    • 特点: 插入和删除操作效率高,但随机访问相对较慢。
  3. Vector(向量):

    • 底层实现原理: 类似于ArrayList,但是它是同步的,适合在多线程环境中使用。
    • 特点: 线程安全,但在性能上可能不如ArrayList。
  4. Stack(栈):

    • 底层实现原理: 继承自Vector,实现了一个后进先出(LIFO)的栈。
    • 特点: 主要用于实现栈数据结构。

Java代码示例:

  1. ArrayList:

    import java.util.ArrayList;
    
    public class ArrayListExample {
        public static void main(String[] args) {
            ArrayList<String> arrayList = new ArrayList<>();
    
            // 添加元素
            arrayList.add("Java");
            arrayList.add("Python");
            arrayList.add("C++");
    
            // 打印元素
            System.out.println("ArrayList: " + arrayList);
    
            // 访问元素
            System.out.println("Element at index 1: " + arrayList.get(1));
    
            // 删除元素
            arrayList.remove("Python");
            System.out.println("After removing 'Python': " + arrayList);
        }
    }
    
  2. LinkedList:

    import java.util.LinkedList;
    
    public class LinkedListExample {
        public static void main(String[] args) {
            LinkedList<String> linkedList = new LinkedList<>();
    
            // 添加元素
            linkedList.add("Apple");
            linkedList.add("Banana");
            linkedList.add("Orange");
    
            // 打印元素
            System.out.println("LinkedList: " + linkedList);
    
            // 在指定位置插入元素
            linkedList.add(1, "Grapes");
            System.out.println("After inserting 'Grapes' at index 1: " + linkedList);
    
            // 删除元素
            linkedList.remove("Banana");
            System.out.println("After removing 'Banana': " + linkedList);
        }
    }
    
  3. Vector:

    import java.util.Vector;
    
    public class VectorExample {
        public static void main(String[] args) {
            Vector<String> vector = new Vector<>();
    
            // 添加元素
            vector.add("Red");
            vector.add("Green");
            vector.add("Blue");
    
            // 打印元素
            System.out.println("Vector: " + vector);
    
            // 在指定位置插入元素
            vector.add(1, "Yellow");
            System.out.println("After inserting 'Yellow' at index 1: " + vector);
    
            // 删除元素
            vector.remove("Green");
            System.out.println("After removing 'Green': " + vector);
        }
    }
    
  4. Stack:

    import java.util.Stack;
    
    public class StackExample {
        public static void main(String[] args) {
            Stack<String> stack = new Stack<>();
    
            // 压栈
            stack.push("One");
            stack.push("Two");
            stack.push("Three");
    
            // 打印栈顶元素
            System.out.println("Top element: " + stack.peek());
    
            // 弹栈
            System.out.println("Popped element: " + stack.pop());
    
            // 打印剩余栈元素
            System.out.println("Stack after pop: " + stack);
        }
    }
    
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客李华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值