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

来源:互联网 发布:淘宝网登陆注册 编辑:程序博客网 时间:2024/05/13 17:31

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.adda1.add("one");a1.add("two");a1.add("Three");a1.add("one");a1.add(null);a1.add("one");//2.addAllLinkedList<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.removea1.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 
链表为空



阅读全文
0 0
原创粉丝点击