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接口的使用。
- Java类集学习(二)List接口
- java日常学习:集合(二)list和set接口
- Java数据结构详解(二)-List接口
- JAVA集合二 ——list(01、List接口)
- Core Java (二十二) 列表(List接口)
- java学习笔记(二十五)接口
- java jdbc学习整理二(接口)
- java集合学习二List
- Thinking in Java之List接口、ArrayList类源码学习
- 【Java学习笔记】32:List接口及其实现类
- Java基础学习笔记(八)List接口
- Java容器学习之List接口
- 共同学习Java源代码--数据结构--List接口
- Java集合类--List接口
- Java-集合(list接口)
- Java学习笔记(32)--接口 详解(二)
- java学习笔记(二)图形用户接口
- java 学习笔记 继承与接口(二)
- jquery提交ajax Form(未完成)
- #! /bin/sh 与 #! /bin/bash 的区别
- 木以不材而终其天年 人以无为而成其有为
- ARM-LINUX开发环境的搭建(三)
- 教你如何在Win10/Win8/Win7运行MATLAB7.0
- Java类集学习(二)List接口
- 数据挖掘、机器学习和模式识别关系与区别
- 使用coocaPod遇到的各种问题
- Java基础学习总结(20)——基础语法
- Linux下安装mongodb
- 防苹果小米日期时间控件
- java j2ee 面试题目
- Java基础学习总结(21)——数组
- 51NOD 1020 逆序排列