Java类集学习(二)List接口

来源:互联网 发布:mac上音频剪辑软件 编辑:程序博客网 时间:2024/04/28 16:24

List接口及其常用子类

List中可以保存各个重复的内容。接口定义:public  interface List<E> extends Collection<E>

List继承Collection接口并大量扩充了Collection接口,拥有了更多的方法定义。

下面介绍List常用的子类:

1、ArrayList

定义: public class ArrayList<E> extends AbstractList<E> implements List<E>, 

          public class AbstractList<E> extends AbstractCollection<E> implements List<E>

(1)向集合中添加元素:

add():向list集合中添加元素;

add(int index,E element):向集合指定位置添加元素;

addAll(int index,Collection<?> c):向集合指定位置添加一组对象

例子:

public class ArrayListDemo01 {    public static void main(String[] args){        List<Object> list = new ArrayList<Object>();        List<String> list1 = new ArrayList<String>();        list.add("Hello World");        System.out.println(list);        list.add(0, 123);        System.out.println(list);        list1.add("456");        list1.add("789");        list.addAll(list1);        System.out.println(list);        System.out.println(list.size());    }}
输出结果为:

[Hello World][123, Hello World][123, Hello World, 456, 789]4

(2)、删除集合中的元素:

add()方法一次只添加一个元素,多个元素添加会多次调用add(),每个元素之间用","隔开存储,一个元素之内可以有","(在于定义的LIst类型);

remove(int index):删除某个位置的元素;

remove(E element):删除某个元素;

removeAll(Collection<?> c):删除一组对象

例:

public class ArrayListDemo02 {    public static void main(String[] args){        List<String> list = new ArrayList<String>();        list.add("123,Hello World");        System.out.println(list);        System.out.println(list.size());//        list.remove(1);  错误,此list总共只有一个长度,存储位置为0//        list.remove("123"); 错误,"123,Hello World"为一个元素,不能删除某一元素的一部分        list.add(0,"456");        list.remove(1);        System.out.println(list);        System.out.println(list.size());        list.remove("456");        System.out.println(list);        System.out.println(list.size());    }}
输出结果为:

[123,Hello World]1[456]1[]0

(3)集合的其他相关操作:

List中还存在截取集合、查找元素位置、判断元素是否存在、判断集合是否为空

public class ArrayListDemo03 { public static void main(String[] args){        List<String> list = new ArrayList<String>();        System.out.println("集合是否为空?" + list.isEmpty());        list.add("Hello");        list.add("World");        list.add(0, "123");        System.out.println(list.contains("Hello") ? "\"Hello\"字符串存在!" : "\"Hello\"字符串不存在!");        List<String> subList = list.subList(1,2);//截取集合        System.out.println("集合截取:"+subList);        System.out.println("123字符的位置:"+list.indexOf("123"));    }}
输出结果为:

集合是否为空?true"Hello"字符串存在!集合截取:[Hello]123字符的位置:0
(4)集合的输出:

我们将在后续文章中讲解

2、Vector

List接口中还有一个子类:Vector,他是一个挽救的子类,

定义:public class Vector<E> extends AbstractList<E> implements List<E>

List<String> list = new Vector<String>();

list.add();

Vector<String> list1 = new Vector<String>();

list1.addElement();

使用上和ArrayList没有太大的区别。

ArrayList与Vector的比较:

对比      推出时间      性能    线程安全  ArrayList新,JDK1.2后异步处理,
高性能非线程安全Vector旧,JDK1.0时同步处理,
低性能线程安全从实际应用来开,ArrayList使用的比较多。

3、LinkedList子类与Queue接口

LinkedList表示的是一个链表的操作类,此类实现了List同时也实现了Queue接口,先进先出。

(1)在链表的开头和结尾增加数据,为了达到链表的目的,必须使用LinkedList类

public class LinkedListDemo01 {/** * LinkedList类,对链表增加数据 */public static void main(String[] args) {LinkedList<String> link = new LinkedList<String>();        link.add("A");        link.add("B");        link.add("C");        System.out.println("初始化链表:"+link);        link.addFirst("X");//在链表头增加内容        link.addLast("Y");//在链表尾部增加内容        System.out.println("增加头尾之后的链表:"+link);}}
输出结果:

初始化链表:[A, B, C]增加头尾之后的链表:[X, A, B, C, Y]

(2)找到链表的头

public class LinkedListDemo02 {/** * 找到标头的方式 */public static void main(String[] args) {LinkedList<String> link = new LinkedList<String>();link.add("A");link.add("B");link.add("C");System.out.println("创建的链表"+link);System.out.println("1.element方法找到表头:"+link.element());System.out.println("找完之后的链表:"+link);System.out.println("2.peek方法找到表头:"+link.peek());System.out.println("找完之后的链表:"+link);System.out.println("3.poll方法找到表头:"+link.poll());System.out.println("找完之后的链表:"+link);}}

输出结果:

创建的链表[A, B, C]1.element方法找到表头:A找完之后的链表:[A, B, C]2.peek方法找到表头:A找完之后的链表:[A, B, C]3.poll方法找到表头:A找完之后的链表:[B, C]

(3)先进先出的方式取出全部数据

public class LinkedListDemo03 {/** * 以先进先出的方式取出全部数据 */public static void main(String[] args) {LinkedList<String> link = new LinkedList<String>();link.add("A");link.add("B");link.add("C");System.out.println(link);System.out.println("以FIFO方式输出:");for(int i=0;i<link.size()+2;i++){System.out.print(link.poll()+"、");}}}

输出结果:

[A, B, C]以FIFO方式输出:A、B、C、
在List 接口中实际开发用的较多的是ArrayList类。

下文讲解类集中Set接口的使用。






1 0
原创粉丝点击