深入Collection集合的子接口List
来源:互联网 发布:中铁建物业怎么样知乎 编辑:程序博客网 时间:2024/05/17 01:11
今天来理顺一下Java里面的Collection集合以及里面的子集合,请看下面这张图片:
Collectio集合有两个子接口:List和Set
List的特点:元素是有序的,元素可以重复,因为该集合体系有索引
Set的特点:元素是无序的,元素不能重复
List集合底下的三个子接口;
ArrayList:底层使用的是数组结构,特点:查询速度很快,还有修改,但是增删稍慢,线程不同步
LinkedList:底层使用的是链表结构 特点:增删速度很快,查询速度稍慢
Vector:底层是数组数据结构,线程同步,无论增删,还是查询效率都慢,被ArrayList取代了
先来说一下List集合的公共方法:
增:add(index,element);
删:remove(index);
改:set(index,element);
查:get(index); && subList(from,to); && listIterator();
其中listIterator是List特有的迭代器,ListIterator是Iterator的子接口。在迭代时,不能通过集合对象的方法操作集合中的元素,因为会产生ConcurrentModificationException异常,所以在迭代时只能用迭代器的方法去操作元素,可是Iterator的方法是有限的,只能进行元素的查询,删除,判断操作,如果想要 其他的操作。如添加,修改,就需要使用其子接口:ListIterator。该接口只能通过List集合的listIterator方法获取。
分别说一下三个子接口:
ArrayList接口的相关代码:
import java.util.*;public class Test01{public static void main(String[] args){method_get();}public static void sop(Object obj){System.out.println(obj);}public static void base_method(){ArrayList a = new ArrayList();//添加a.add("a");a.add("b");a.add("c");a.add("d");//获取元素个数sop(a.size());//打印集合sop(a);//删除元素a.remove("a");sop(a);//判断元素sop(a.contains("b"));//清空集合//a.clear();//集合是否为空sop(a.isEmpty());}public static void method_2(){ArrayList a1 = new ArrayList();a1.add("1");a1.add("2");a1.add("3");a1.add("4");ArrayList a2 = new ArrayList();a2.add("3");a2.add("4");a2.add("5");a2.add("6");//a1.retainAll(a2);//取交集a1.removeAll(a2);//去掉和a2中相同的元素sop(a1);sop(a2);} /*什么是迭代器:是用于取出集合中元素的一种方式*/public static void method_get(){ArrayList a1 = new ArrayList();a1.add("java01");a1.add("java02");a1.add("java03");a1.add("java04");Iterator it = a1.iterator();//获取迭代器,用于取出集合中的元素/*sop(it.hasNext());//有元素返回的是true,没有元素返回的是falsesop(it.next());sop(it.next());sop(it.next());sop(it.next());*/while(it.hasNext()){sop(it.next());}}}
LinkedList接口的相关代码:
/*使用linkedlist模拟一个堆栈和队列的数据结构堆栈:先进先出,如同一个杯子队列:先进后出,如同一个水管*/import java.util.*;public class linkedlist2{public static void main(String[] args){DuiLie li = new DuiLie();li.myAdd("java01");li.myAdd("java02");li.myAdd("java03");li.myAdd("java04");while(!li.isNull()){System.out.println(li.myGet());}}}class DuiLie{private LinkedList link;public DuiLie(){//一初始化就创建对象link = new LinkedList();}public void myAdd(Object obj){link.addFirst(obj);}public Object myGet(){return link.removeFirst();}public boolean isNull(){return link.isEmpty();}}
Vector的相关代码:
import java.util.*;/*枚举就是Vector特有取出方式发现枚举和迭代器很像:其实枚举和迭代是一样的因为枚举的名称和其方法的名称都过长了,所以被迭代给取代了*/public class Vector{public static void main(String[] args){Vector v = new Vector();v.add("java01");v.add("java02");v.add("java03");v.add("java04");Enumeration en = v.elements();while(en.hasMoreElements()){System.out.println(en.nextElements());}}}
0 0
- 深入Collection集合的子接口List
- Java集合Collection接口之List子接口
- 深入Collection集合的孙子接口HashSet
- java集合(Collection接口下的 List、Set 深入理解)
- Collection接口之List子接口详解
- Collection子接口(List/Set/Queue/SortedSet)
- Collection<E>子接口之List<E>
- 对集合框架的一些概括总结之collection接口 子接口 子实现类
- Java基础-集合Collection&List接口
- 集合框架Collection之list接口
- java 集合 Collection接口 List 和Set
- 集合Collection接口下Set接口List接口
- Collection子接口的定义
- Collection接口下的集合
- Collection下的List接口
- List,Set,Map是否继承自Collection接口? 答:List,Set是,Map不是。 Collection是最基本的集合接口,一个Collection代表一组Object,即Colle
- 黑马程序员—集合框架Collection接口与List接口
- 集合框架(一) Collection接口中的List接口
- 洛谷 P2278 [HNOI2003]操作系统
- Dubbo入门学习--Dubbo简单示例
- HDOJ 2019 数列有序!
- 复习笔记-java桟与堆内存分配
- 关于集合
- 深入Collection集合的子接口List
- Spring拦截器的使用
- QT小知识点(1)
- 【Java学习20170427】jQuery
- poj3321——Apple Tree(树上树状数组)
- return false防止默认的事件行为
- HDU
- 多分类问题Softmax Regression
- bzoj2456: mode