【Java List接口】

78 篇文章 0 订阅

常用方法和遍历方式

package com.yuzhenc.collection;

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

/**
 * @author: yuzhenc
 * @date: 2022-03-03 21:15:16
 * @desc: com.yuzhenc.collection
 * @version: 1.0
 */
public class Test03 {
    public static void main(String[] args) {
        /*
        List接口中常用方法:
        增加:add(int index, E element)
        删除:remove(int index)  remove(Object o)
        修改:set(int index, E element)
        查看:get(int index)
        判断:
         */
        List list = new ArrayList();
        list.add(1);
        list.add(2);
        //list.add(3,"hello");//报错,index的范围:[0,list,size()]
        list.add(2,"hello");//在索引2的位置添加元素hello
        System.out.println(list);//[1, 2, hello]
        list.add(1,"sqlboy");
        System.out.println(list);//[1, sqlboy, 2, hello]

        //修改索引位上的元素的值,index范围[0,list.size)
        list.set(0,0);
        System.out.println(list);//[0, sqlboy, 2, hello]

        //参数位int类型的时候,实际调用的是方法 remove(int index),返回删除的元素
        System.out.println(list.remove(3));//hello
        System.out.println(list);//[0, sqlboy, 2]
        //参数位非int时,实际调用的是方法 remove(Object o),返回删除成功删除
        System.out.println(list.remove("sqlboy"));//true
        System.out.println(list.remove("hello"));//false
        System.out.println(list);//[0, 2]

        Object o = list.get(0);
        System.out.println(o);//0

        //遍历
        //1.普通for循环
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+"\t");//0	2
        }
        System.out.println();
        //2.增强for循环
        for (Object object : list) {
            System.out.print(object+"\t");//0	2
        }
        System.out.println();
        //3.迭代器
        for (Iterator i = list.iterator(); i.hasNext(); ) {
            System.out.print(i.next()+"\t");//0	2	
        }
    }
}

ArrayList和Vector

  1. 线程安全:Vector使用了Synchronized 来实现线程同步,是线程安全的,而ArrayList 是非线程安全的;
  2. 性能:ArrayList优于Vector;
  3. 扩容:Vector每次增加1倍,ArrayList每次增加0.5倍;
package com.yuzhenc.collection;

import java.util.ArrayList;
import java.util.Vector;

/**
 * @author: yuzhenc
 * @date: 2022-03-03 21:46:56
 * @desc: com.yuzhenc.collection
 * @version: 1.0
 */
public class Test04 {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        long startTime = System.currentTimeMillis();
        for (int i = 0; i < 1000000; i++) {
            arrayList.add(i);
        }
        long endTime = System.currentTimeMillis();

        Vector vector = new Vector();
        long startTime1 = System.currentTimeMillis();
        for (int i = 0; i < 1000000; i++) {
            vector.add(i);
        }
        long endTime1 = System.currentTimeMillis();
        System.out.println("ArrayList写:"+(endTime-startTime));//
        System.out.println("Vector写:"+(endTime1-startTime1));//

        long startTime2 = System.currentTimeMillis();
        for (int i = 0; i < arrayList.size(); i++) {
            int j = 2;
        }
        long endTime2 = System.currentTimeMillis();

        long startTime3 = System.currentTimeMillis();
        for (int i = 0; i < vector.size(); i++) {
            int j = 2;
        }
        long endTime3 = System.currentTimeMillis();

        System.out.println("ArrayList读:"+(endTime2-startTime2));
        System.out.println("Vector读:"+(endTime3-startTime3));

    }
}

在这里插入图片描述

LinkedList

package com.yuzhenc.collection;

import java.util.Iterator;
import java.util.LinkedList;

/**
 * @author: yuzhenc
 * @date: 2022-03-03 22:18:04
 * @desc: com.yuzhenc.collection
 * @version: 1.0
 */
public class Test05 {
    public static void main(String[] args) {
        /*
        LinkedList常用方法:
        增加 addFirst(E e) addLast(E e)
             offer(E e) offerFirst(E e) offerLast(E e)
        删除 poll()
            pollFirst() pollLast()  ---》JDK1.6以后新出的方法,提高了代码的健壮性
            removeFirst() removeLast()
        修改
        查看 element()
             getFirst()  getLast()
             indexOf(Object o)   lastIndexOf(Object o)
             peek()
             peekFirst() peekLast()
        判断
         */
        LinkedList linkedList = new LinkedList();
        linkedList.add(1);
        linkedList.add(2);//在尾部添加元素,并且返回true
        linkedList.addFirst(0);//在首部添加元素,无返回值
        linkedList.addLast(3);//在尾部添加元素,无返回值
        linkedList.offer("hello");//在尾部添加元素,并且返回true
        linkedList.offerFirst(" ");//在首部添加元素,并且返回true
        linkedList.offerLast("sqlboy");//在尾部添加元素,并且返回true
        System.out.println(linkedList);//[ , 0, 1, 2, 3, hello, sqlboy]
        //LinkedList和ArrayList都可以添加重复元素
        linkedList.add(3);
        System.out.println(linkedList);//[ , 0, 1, 2, 3, hello, sqlboy, 3]
        //删除头部元素,并返回该元素,若没有元素则返回null
        System.out.println(linkedList.poll());//
        System.out.println(linkedList);//[0, 1, 2, 3, hello, sqlboy, 3]
        //删除头部元素,并返回该元素,若没有元素则返回null
        System.out.println(linkedList.pollFirst());//0
        System.out.println(linkedList);//[1, 2, 3, hello, sqlboy, 3]
        //删除尾部元素,并返回该元素,若没有元素则返回null
        System.out.println(linkedList.pollLast());//3
        System.out.println(linkedList);//[1, 2, 3, hello, sqlboy]

        /*
        linkedList.clear();
        System.out.println(linkedList.remove());//移除首部元素,首部没有元素则抛出异常java.util.NoSuchElementException
        System.out.println(linkedList.removeFirst());//移除首部元素,首部没有元素则抛出异常java.util.NoSuchElementException
        System.out.println(linkedList.removeLast());//移除尾部元素,首部没有元素则抛出异常java.util.NoSuchElementException
        */

        //遍历
        //普通for循环
        for (int i = 0; i < linkedList.size(); i++) {
            System.out.print(linkedList.get(i)+"\t");//1	2	3	hello	sqlboy
        }
        System.out.println();
        //增强for循环
        for (Object o : linkedList) {
            System.out.print(o+"\t");//1	2	3	hello	sqlboy
        }
        System.out.println();
        //迭代器
        for (Iterator i = linkedList.iterator(); i.hasNext() ; ) {
            System.out.print(i.next()+"\t");//1	2	3	hello	sqlboy	
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sqlboy-yuzhenc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值