MEC@JavaSE@进阶篇@笔记05@List集合&&ArrayList&&LinkedList

一、List接口

1、List的特点

有序、可重复、有索引。

2、特有方法

方法说明
void add(int index, E element)在指定的索引添加元素
E get(int index)获取指定索引处的元素
E remove(int index)删除指定索引处的元素
E set(int index, E element)修改指定索引处的元素

代码演示

import java.util.ArrayList;
import java.util.List;
​
/*
    void add(int index, E element)在指定的索引添加元素
    E get(int index)获取指定索引处的元素
    E remove(int index)删除指定索引处的元素
    E set(int index, E element)修改指定索引处的元素
 */
public class TestList {
    public static void main(String[] args) {
        //创建list集合
        List<String> list = new ArrayList();
        list.add("aa");
        list.add("bb");
        list.add("cc");
        list.add("dd");
​
        //void add(int index, E element)在指定的索引添加元素
        //list.add(2,"ee");
​
        //E get(int index)获取指定索引处的元素
        // String s = list.get(1);
        // System.out.println(s);
​
        //E remove(int index)删除指定索引处的元素
        // String s = list.remove(1); //返回值是删除的元素
        // System.out.println(s);
​
        // boolean b = list.remove("bb");
        // System.out.println(b);
​
        //E set(int index, E element)修改指定索引处的元素
        list.set(1, "gg");
​
        System.out.println(list);
    }
}

3、ArrayList集合

ArrayList底层用的是数组来存储数据。

所以ArrayList集合特点增删元素慢,查询元素快。

4、LinkedList集合

LinkedList底层用的是双向链表来存储数据。

所以LinkedList集合特点增删元素快,查询元素慢。

两个集合效果演示

import java.util.ArrayList;
import java.util.LinkedList;
​
public class TestArrayListAndLinedList {
    public static void main(String[] args) {
        //测试ArrayList
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("宋喆");
        arrayList.add("马蓉");
​
        long start = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            arrayList.add(1,"宝强");
        }
        long end = System.currentTimeMillis();
​
        System.out.println("ArrayList使用时间为:"+(end-start));
​
​
        //测试LinkedList
        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("宋喆");
        linkedList.add("马蓉");
        long start1 = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            linkedList.add(1,"宝强");
        }
        long end1 = System.currentTimeMillis();
​
        System.out.println("LinkedList使用时间为:"+(end1-start1));
    }
}
——————————————————————————————————————————————————————————————————————————————
​
ArrayList使用时间为:8毫秒
LinkedList使用时间为:2毫秒

LinkedList的特有方法

因为底层是双向链表所以有和头尾先关的操作方法,知道就可以了不用记。

方法说明
void addFirst(E e)往开头添加元素
void addLast(E e)往末尾添加元素
E getFirst()获取开头的元素
E getLast()获取末尾的元素
E removeFirst()删除开头的元素
E removeLast()删除末尾的元素

代码演示

import java.util.LinkedList;
public class TestLinkedList {
    public static void main(String[] args) {
​
        //创建对象
        //LinkedList的底层是双向链表
        LinkedList<String> list = new LinkedList<>();
​
        //添加方法
        list.add("宋喆");
        list.add("马蓉");
​
        //给开头添加
        list.addFirst("王宝强");
        //给末尾添加
        list.addLast("白百何");
​
        System.out.println(list);  //[王宝强, 宋喆, 马蓉, 白百何]
​
        //获取开头的元素
        String first = list.getFirst();
        System.out.println(first);
​
        //获取结尾的元素
        String last = list.getLast();
        System.out.println(last);
​
        //删除开头的元素
        list.removeFirst();
​
        //删除结尾的元素
        list.removeLast();
​
        System.out.println(list);  //[宋喆, 马蓉]
    }
}
​

遍历的总结

import java.util.ArrayList;
import java.util.Iterator;
​
public class Test04 {
    public static void main(String[] args) {
​
        //创建对象
        ArrayList<String> list = new ArrayList<>();
        list.add("宋喆");
        list.add("王宝强");
        list.add("贾乃亮");
​
        //迭代器
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String s = it.next();
            System.out.println(s);
        }
​
        System.out.println("======================");
​
        //增强for
        for (String s : list) {
            System.out.println(s);
        }
​
        System.out.println("======================");
​
        //普通for遍历
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }
​
​
        /*
            对于List来说因为有索引所以其实都能用,如果是没有索引的集合就只能用迭代器和增强for
            List:
                如果需要索引或者增删元素就用普通for
                如果为了方便就用增强for
                一般不需要迭代器
​
            Set:
                如果为了方便就用增强for
                如果需要遍历的时候删除元素就用迭代器
         */
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值