【Java学习笔记】32:List接口及其实现类

List和Set都是collection接口下的,本节学习List接口及其两个实现类ArrayList和LinkedList。
List是有序的,可重复的,可以为null的集合。数组可以存任何数据类型的元素,但List不能存基本数据类型,且数组容量固定,而List的容量动态更新,也因此List的效率要比数组低。

*测试ArrayList

package day32;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {

    public static void main(String[] args) {
        ArrayList<String> a1=new ArrayList<String>();
        //1.add
        a1.add("one");
        a1.add("two");
        a1.add("Three");
        a1.add("one");
        a1.add(null);
        a1.add("one");

        //2.addAll
        ArrayList<String> a2=new ArrayList<String>();
        a2.add("a2-1");
        a2.add("a2-2");
        a1.addAll(a2);

        //3.遍历
        for(String k:a1)
        {
            System.out.print(k+" ");
        }
        System.out.println();

        //4.包含元素
        boolean b=a1.contains("one");
        System.out.println(b);

        //5.包含集合
        boolean c=a1.containsAll(a2);
        System.out.println(c);

        //6.size/随机访问
        int s=a1.size();
        for(int i=0;i<s;i++)
        {
            System.out.print(a1.get(i)+" ");
        }
        System.out.println();

        //7.remove
        a1.remove("one");//删第一次出现的
        a1.remove(0);//删指定下标的
        a1.removeAll(a2);//差集
        loop(a1);

        //8.迭代器
        Iterator<String> i=a1.iterator();
        while(i.hasNext())
        {
            System.out.print(i.next()+" ");
        }
        System.out.println();

        //9.清空
        a1.clear();
        System.out.println(a1.isEmpty());

    }

    static void loop(List<String> list)
    {
        for(String e:list)
        {
            System.out.print(e+" ");
        }
        System.out.println();
    }

}

它和数组更加接近。

运行结果:
one two Three one null one a2-1 a2-2 
true
true
one two Three one null one a2-1 a2-2 
Three one null one 
Three one null one 
true


*测试LinkedList
它相当于一个双向链表,查询慢,但添加和删除的效率高。

package day32;
import java.util.LinkedList;
import java.util.Iterator;
import java.util.List;
public class Test {

	public static void main(String[] args) {
		LinkedList<String> a1=new LinkedList<String>();
		//1.add
		a1.add("one");
		a1.add("two");
		a1.add("Three");
		a1.add("one");
		a1.add(null);
		a1.add("one");
		
		//2.addAll
		LinkedList<String> a2=new LinkedList<String>();
		a2.add("a2-1");
		a2.add("a2-2");
		a1.addAll(a2);
		
		//3.遍历
		for(String k:a1)
		{
			System.out.print(k+" ");
		}
		System.out.println();
		
		//4.包含元素
		boolean b=a1.contains("one");
		System.out.println(b);
		
		//5.包含集合
		boolean c=a1.containsAll(a2);
		System.out.println(c);
		
		//6.size/随机访问
		int s=a1.size();
		for(int i=0;i<s;i++)
		{
			System.out.print(a1.get(i)+" ");
		}
		System.out.println();
		
		//7.remove
		a1.remove("one");//删第一次出现的
		a1.remove(0);//删指定下标的
		a1.removeAll(a2);//差集
		loop(a1);
		
		//8.迭代器
		Iterator<String> i=a1.iterator();
		while(i.hasNext())
		{
			System.out.print(i.next()+" ");
		}
		System.out.println();
		
		//9.模拟入栈出栈
		a1.push("flora");
		System.out.print("入栈后:");
		loop(a1);
		System.out.println("栈顶为:"+a1.pop());
		System.out.print("出栈后:");
		loop(a1);

		//10.清空
		a1.clear();
		System.out.println(a1.isEmpty() ? "链表为空":"非空!");
	}
	
	static void loop(List<String> list)
	{
		for(String e:list)
		{
			System.out.print(e+" ");
		}
		System.out.println();
	}

}
运行结果:

one two Three one null one a2-1 a2-2 
true
true
one two Three one null one a2-1 a2-2 
Three one null one 
Three one null one 
入栈后:flora Three one null one 
栈顶为:flora
出栈后:Three one null one 
链表为空



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值