List的三个子类:ArrayList、Vector、LinkedList

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013317445/article/details/81976685

List的三个子类特点

1.ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高
2.Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低
3.LinkedList
底层数据结构是链表,查询慢,增删看。
线程不安全,效率高。
4.用哪个呢?
考虑,要安全吗?要安全也一般不用Vector。
查询多还是增删多?

ArraList

ArraList类是List接口的一个子类。
底层数据结构是数组。

删除中多了这个功能:
protected void removeRange(int fromIndex, int toIndex)
从这个列表中删除所有索引在 fromIndex (含)和 toIndex之间的元素。

创建并遍历ArrayList集合

1.存储字符串对象

import java.util.Iterator;
import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args){
        //创建集合
        ArrayList l= new ArrayList();

        //创建对象并添加到集合
        l.add("you");
        l.add("wanna");
        l.add("help");
        l.add("me");
        l.add("the");
        l.add("frosting");

        //迭代器遍历
        Iterator it= l.iterator();
        while(it.hasNext()){
            String s= (String)it.next();
            System.out.print(s+" ");
        }
        System.out.println("");

        //普通for遍历
        for(int i=0; i<l.size();++i){
            String s= (String)l.get(i);
            System.out.print(s+" ");
        }
    }

}

2.存储自定义对象

//Student.java

public class Student {
    // 姓名
    private String name;
    // 年龄
    private int age;

    public Student() {
        super();
    }

    public Student(String name, int age) {
        super();
        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;
    }

}
public class ArrayListDemo2 {
    public static void main(String[] args) {
        // 创建集合对象
        ArrayList array = new ArrayList();

        // 创建元素对象
        Student s1 = new Student("曹操", 40); 
        Student s2 = new Student("蒋干", 30); 
        Student s3 = new Student("诸葛亮", 26);

        // 添加元素
        array.add(s1);
        array.add(s2);
        array.add(s3);

        // 遍历:迭代器遍历
        Iterator<Student> it = array.iterator();
        while (it.hasNext()) {
            Student s = it.next();
            System.out.println(s.getName() + "---" + s.getAge());
        }
        System.out.println("------------------");

        //普通for遍历
        for (int x = 0; x < array.size(); x++) {
            Student s = array.get(x);
            System.out.println(s.getName() + "---" + s.getAge());
        }
    }
}

Vector

Vector类是List接口的一个子类。
底层数据结构是数组。
用List的方法就可以。

Linkedlist

Linkedlist类是List接口的一个子类。
底层数据结构是链表。
特有功能:

  • 添加功能:
    public void addFirst(E e):
    public void addLast(E e) 相当于add()

  • 删除功能
    public E removeFirst():从此列表中删除并返回第一个元素。(模拟栈的时候,是不是可以用此方法来模拟出栈呢?对的。弹出元素)
    public E removeLast():删最后一个元素并返回

  • 获取功能
    public E getFirst()返回此列表中的第一个元素。
    public E getLast()获取最后一个元素

猜你喜欢

转载自blog.csdn.net/u013317445/article/details/81976685