List集合接口、ArrayList集合、linkedList集合、vector集合

List集合接口

java.util.collection集合(接口)常用的两个子类集合java.util.List集合(接口)和java.util.Set集合(接口)

java.util.List接口 extends collection接口

List接口的特点:

1.有序的集合(也称为序列),存储元素和取出元素的顺序是一致的

2.有索引,包含了一些带索引的方法

3.与set集合不同,允许存储重复的元素。

List接口中带索引的方法(特有)

void add(int index, E element);//在特定索引处添加数据,后面索引的数据向后移动一位
E get(int index);//返回指定索引的元素
E remove(int index)//删除指定索引的元素,后面元素索引向前移动一位,同时返回删除的元素
E set(int index, E element);//替换指定索引的元素,并返回被替换的元素

注意:操作索引的时候,一定要防止索引越界异常。

package mycollection;

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

//测试List集合中特有的操作索引来控制元素的方法
public class TestList01 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        System.out.println(list);//[a, b, c, d, e]

        //void add(int index, E element);//在特定索引处添加数据,后面索引的数据向后移动一位
        //在b与c之间插入“哈”
        list.add(2,"哈");
        System.out.println(list);//[a, b, 哈, c, d, e]

        //E get(int index);//返回指定索引的元素
        //获取List集合中最后一个元素
        String end = list.get(list.size() - 1);
        System.out.println(end);//e

        //E remove(int index)//删除指定索引的元素,后面元素索引向前移动一位,同时返回删除的元素
        String remove = list.remove(2);//跟boolean remove = list.remove("哈");差不多,只不过返回值不一样
        System.out.println(remove);//哈
        System.out.println(list);//[a, b, c, d, e]

        //E set(int index, E element);//替换指定索引的元素,并返回被替换的元素
        //将C替换成“替”
        String replace = list.set(2, "替");
        System.out.println(replace);
        System.out.println(list);

        //注意:操作索引的时候,一定要防止索引越界异常。
        //list.get(5);//抛出IndexOutOfBoundsException,索引越界异常

        //对List遍历的三种方法

        //普通for循环
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+"\t");
        }
        System.out.println();


        //使用迭代器
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            System.out.print(iterator.next()+"\t");
        }
        System.out.println();


        //增强for循环
        for (String s : list) {
            System.out.print(s+"\t");
        }


    }

}
List集合接口的实现子类java.util.ArrayList集合(最常用的List集合)

java.util.ArrayList集合底层是一个数组结构,元素增删慢,查找快

ArrayList集合适合多查找,少增删的操作

java.util.linkedList集合implements List 接口

Linklist集合特点:(包含List集合特点)

1.底层是一个连表结构:查询慢,增删快

2.里面包含了大量操作首尾元素的方法

注意:使用Linklist集合特有的方法,不能使用多态

public void addFirst(E e)//在列表开头插入指定元素
public void push(E e)//将元素推入列表(两者相同)
public void addLast(E e)//在列表结尾插入指定元素
    
public E getFirst()//获取列表开头元素
public E getLast() //获取列表结尾元素

public E removeFirst()//移除并返回第一个元素
public E pop()//移除并返回此列表的第一个元素。(两者相同)
public E removeLast()//移除并返回最后一个元素
    
public boolean isEmpty()//判断集合是否为空

package mycollection;

import java.util.LinkedList;

public class TestLinkedList01 {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        System.out.println(list);//[a, b, c, d, e]

        list.addFirst("哈哈");//  list.push("哈哈");两者效果相同
        list.addLast("哦哦");
        System.out.println(list);//[哈哈, a, b, c, d, e, 哦哦]

        System.out.println(list.getFirst());//哈哈
        System.out.println(list.getLast());//哦哦

        System.out.println(list.removeFirst());//哈哈//相当于System.out.println(list.pop());
        System.out.println(list);//[a, b, c, d, e, 哦哦]
        System.out.println(list.removeLast());//哦哦
        System.out.println(list);//[a, b, c, d, e]

        System.out.println(list.isEmpty());//false
        list.clear();
        System.out.println(list.isEmpty());//true
    }
}
vector集合(最早的集合,jdk1.0就出现了,底层是数组)---单线程,安全但运行缓慢,渐渐被ArrayList集合所取代
posted @ 2020-08-11 12:41  DannyBoy~  阅读(112)  评论(0编辑  收藏  举报