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

List的三个子类特点

1.ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高
2.Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低
3.LinkedList
底层数据结构是链表,查询慢,增删看。
线程不安全,效率高。
4.用哪个呢?
考虑,要安全吗?要安全也一般不用Vector。而用 Collections工具类的synchronizedList
查询多还是增删多?
//线程不安全
        List<String> list1= new ArrayList<String>();
//线程安全
        List<String> list2= Collections.synchronizedList( new ArrayList<String>());

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()获取最后一个元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值