【Java】List集合

List集合
作为Collection集合的一个子类,其特点 1)有序,可重复 2)有索引可以使用普通的for循环遍历。
List 接口在 iterator、add、remove、equals 和 hashCode 方法的协定上加了一些其他约定,超过了 Collection接口中指定的约定。
List 接口提供了 4 种对列表元素进行定位(索引)访问方法。
List 接口提供了特殊的迭代器,称为 ListIterator,除了允许 Iterator 接口提供的正常操作外,该迭代器还允许元素插入和替换,以及双向访问。还提供了一个方法来获取从列表中指定位置开始的列表迭代器。
List功能
在这里插入图片描述
在这里插入图片描述
Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。由 Vector 的 iterator 和 listIterator 方法所返回的迭代器是快速失败的,Vector 的 elements 方法返回的 Enumeration 不是 快速失败的。
-----底层数据结构是数组,查询快,增删慢,线程安全,效率低。

public class VectorDemo {
    public static void main(String[] args) {
        Vector<String> vec = new Vector<>();
        vec.add("123");
        vec.add("456");
        vec.add("789");
        vec.add("789");
      //    Enumeration<String> en =vec.elements();
     //    while (en.hasMoreElements()){
     //   System.out.println(en.nextElement());
    //     }
    //   Vector<String> str = vec.subList(0, 1);
        List<String> list = vec.subList(0, 1);
        System.out.println();
        Iterator<String> iter  = vec.iterator();
         while (iter.hasNext()){
             System.out.println(iter.next());
         }
    }

List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)size、isEmpty、get、set、iterator 和 listIterator 操作都以固定时间运行。add 操作以分摊的固定时间 运行,也就是说,添加 n 个元素需要 O(n) 时间。每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。
-----底层数据结构是数组,查询快、增删慢,线程不安全,效率高。

public class DemoArrayList {
    public static void main(String[] args) {

        ArrayList arr = new ArrayList();

        arr.add(new Student("123",5));
        arr.add(new Student("456",6));
        arr.add(new Student("789",7));
        arr.add(new Student("369",8));

        Iterator<Student> iter = arr.iterator();
        while (iter.hasNext()){
            Student student = iter.next();
            System.out.println(student.getName()+"----"+student.getGrade());
        }
    }
}

List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现
List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。此类实现 Deque 接口,为 add、poll 提供先进先出队列操作,以及其他堆栈和双端队列操作。所有操作都是按照双重链接列表的需要执行的。在列表中编索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)。
-----底层数据结构是链表,查询慢,增删快,线程不安全,效率高。

public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("11");
        list.add("22");
        list.add("33");
        System.out.println(list);
        System.out.println("--------------------------------------");
        list.addFirst("888");
        list.push("9999");
//        String str = list.get(2);
        System.out.println(list);
//        list.iterator();
//        list.listIterator();

    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值