List:有序,有索引,可重复。
|--ArrayList:底层数据结构是 数组结构.是线程不同步的(不安全的).查询速度很快,但是增删较慢。
构造一个初始容量为 10 的空列表,当放满了10个元素后,以50%的长度加长集合容器的长度。
List 接口的大小可变数组的实现,即:可以直接指定容量大小
|--LinkedList:底层数据结构是 链表结构。对元素的增删速度很快。但是查询速度很慢。线程是不同步的。
|--Vector:底层数据结构也是数组结构,是线程同步的(安全的),效率低,被ArrayList替代了。1.2版本以后的集合都是不同步的
当放满了10个元素后,以100%的长度加长集合容器的长度。
1,首先看一下LinkedList(ArrayList不做介绍)
package cn.java.collection.list; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; public class LinkedListDemo { /* LinkedList中的一些方法在JDK1.6以后有了替代。 addFirst(); addLast(); JDK1.6: offerFirst(); offerLast(); getFirst();如果链表中没有元素,获取出现异常。NoSuchElementException getLast(); JDK1.6: peekFirst();如果链表中没有元素,则返回null。 peekLast(); removeFirst();如果链表中没有元素,获取出现异常。NoSuchElementException removeLast(); JDK1.6: pollFirst();如果链表中没有元素,则返回null。 pollLast(); */ public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) { LinkedList<String> link = new LinkedList<String>(); // System.out.println("heihei……"+link.getFirst());//如果链表中没有元素,获取出现异常。NoSuchElementException System.out.println("heihei……"+link.peekFirst());//jdk1.6以后的方法,如果链表中没有元素,返回null // System.out.println("heihei……"+link.removeLast());//如果链表中没有元素,获取出现异常。NoSuchElementException System.out.println("heihei……"+link.pollLast());//jdk1.6以后的方法,如果链表中没有元素,返回null //链表的特有方法。添加. link.addFirst("abc1"); link.addFirst("abc2"); link.addFirst("abc3"); link.addFirst("abc4"); //link.addLast("abc5"); for(int x=0; x<link.size();x++) { System.out.println("get:"+link.get(x)); } /* for(int x=0; x<link.size();) { System.out.println("x="+x+"...size="+link.size()); System.out.println(link.removeFirst()); }*/ printColl(link);//这里也可以将Linkedlist作为一个参数传递给超类Collection,然后用Collection的获取方法,如果使用了迭代器,则不能同时使用collection本身的增加,修改,删除 while(!link.isEmpty()) { System.out.println("remove:"+link.removeFirst()); } System.out.println("----------------------"); link.add("weiba"); link.clear(); System.out.println(link);//打印出来为一个空的数组:[] /* sop("getFirst:"+link.getFirst());//获取元素,长度不改变。如果链表中没有元素,获取出现异常。NoSuchElementException sop("getLast:"+link.getLast()); sop("get size="+link.size()); sop("removeFirst:"+link.removeFirst());//获取元素,但是元素被删除,长度会改变。如果链表中没有元素,获取出现异常。NoSuchElementException sop("removeLast:"+link.removeLast()); sop("remove size="+link.size());*/ } public static void printColl(Collection<String> coll) { Iterator<String> it = coll.iterator(); while(it.hasNext()) { //此处不能调用coll.remove(it.next());否则会报java.util.ConcurrentModificationException System.out.println("haha"+it.next()); } } }
上面类中main方法执行结果为:
heihei……null
heihei……null
get:abc4
get:abc3
get:abc2
get:abc1
hahaabc4
hahaabc3
hahaabc2
hahaabc1
remove:abc4
remove:abc3
remove:abc2
remove:abc1
----------------------
[]
2.vector集合
import java.util.Enumeration; import java.util.Iterator; import java.util.Vector; /* Enumeration 此接口的功能与 Iterator 接口的功能是重复的 Iterator将Enumeration给替代了, 原因:Enumeration接口的方法名称过长。所以郁郁而终。 */ public class VectorDemoAndEnumeration { public static void main(String[] args) { Vector v = new Vector(); v.addElement("abc1"); v.addElement("abc2"); v.addElement("abc3"); v.addElement("abc4"); for (int i = 0; i < v.size(); i++) { System.out.println("通用获取方式:"+v.get(i)); } //第二种取出方式 Enumeration en = v.elements(); while(en.hasMoreElements()){ System.out.println(en.nextElement()); } System.out.println("----------------"); //第三种取出方式 Iterator it = v.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } } 此类执行结果为: /* 通用获取方式:abc1 通用获取方式:abc2 通用获取方式:abc3 通用获取方式:abc4 abc1 abc2 abc3 abc4 ---------------- abc1 abc2 abc3 abc4*/
相关推荐
Stack是一个特殊的List,它是Vector的子类,实现了后进先出(LIFO)的数据结构,常用于模拟堆栈操作,如压栈、弹栈、查看栈顶元素等。Stack提供了push、pop、peek、empty和search等方法。 Queue接口代表先进先出...
List接口代表有序的集合,允许有重复元素,常见的实现有ArrayList、Vector和LinkedList。ArrayList和Vector都是基于动态数组实现的,而LinkedList则是基于链表实现,所以在进行插入和删除操作时,LinkedList通常会比...
我们今天要讲的是Collection的子类——List. List又有三个实现类: ArrayList LinkedList Vector 这三个都是list,至于什么是子类,我们会在对象那章去普及。他们三个相同点有: 都是list的实现类 都是有序的,也...
List 集合的实现类有 ArrayList、LinkedList 和 Vector 等。ArrayList 是 List 接口的典型实现,使用动态数组来存储集合中的元素,具有良好的存取和查找性能。LinkedList 是 List 接口的另一个实现,使用链表来存储...
【Java面试题】涵盖了许多Java编程的核心知识点,包括但不限于作用域、匿名内部类、静态嵌套类、字符串对象创建、集合框架、STRING与STRINGBUFFER的区别、数据类型、异常处理以及ArrayList、Vector和LinkedList的...
List接口下的实现类包括ArrayList、LinkedList和Vector。ArrayList和Vector底层都使用了数组的线性结构。ArrayList是非线程安全的,支持快速随机访问,但在增删元素时性能较差。Vector作为ArrayList的线程安全版本,...
List接口存储有序的元素,允许重复,如ArrayList和LinkedList;Set接口存储不包含重复元素的集合,如HashSet和TreeSet。此外,还有Map接口,它存储键值对,如HashMap和TreeMap。 1. **ArrayList和LinkedList**:...
List接口继承自Collection,它代表一个有序的、允许重复元素的集合,如ArrayList、Vector和LinkedList。ArrayList基于数组实现,提供随机访问的高性能,但插入和删除元素的效率较低。Vector与ArrayList类似,但它是...
List接口的实现类有LinkedList、ArrayList、Vector和Stack。 1. LinkedList:这是一个双向链表实现的List,支持高效的头部和尾部操作。它允许null元素,并且可以作为堆栈、队列或双向队列使用。但是,由于使用链表...
List接口是有序的集合,允许有重复元素,其子类包括ArrayList、LinkedList和Vector。ArrayList是最常用的列表实现,基于动态数组,适合于频繁的元素访问,但插入和删除性能较差;LinkedList适用于频繁的插入和删除...
本文主要关注的是Java中的两种主要容器类型:Collection和Map,以及它们的一些具体实现,如List接口下的ArrayList、LinkedList和Vector,以及Map接口下的HashMap和Hashtable。 首先,我们来看List接口。List是有序...
这些概念包括方法的重载(overload)与覆盖(override)、接口与抽象类的区别、String、StringBuffer与StringBuilder的特性比较、ArrayList、LinkedList与Vector的差异、List与Set的区别,以及单例模式的实现。...
本篇学习笔记将重点介绍列表(List)、集合(Set)、映射(Map)的不同子类的特点和使用方法。 #### 二、List(列表) **List** 是一种有序的集合,允许重复的元素。主要的实现包括ArrayList、LinkedList、Vector...
- 主要实现类有ArrayList、LinkedList、Stack和Vector。 - ArrayList是动态数组实现,适用于随机访问,插入和删除操作相对较慢。 - LinkedList是双向链表实现,适合于频繁的插入和删除,但随机访问效率较低。 - ...
常用的实现子类有 ArrayList、LinkedList 和 Vector * Set<E> 接口:元素不可以重复,存入元素的顺序与取出元素的顺序一致。常用的实现子类有 HashSet、TreeSet 和 LinkedHashSet * Queue<E> 接口:队列,里的元素...
这部分内容主要聚焦于第11章的“Java集合框架和泛型机制”,特别关注List接口及其几种实现类,包括`ArrayList`、`LinkedList`、`Vector`以及`Stack`。 ### 11-4 List接口实现类 #### 11.4.1 实现类ArrayList - **...
- List接口的实现类包括ArrayList、LinkedList和Vector。ArrayList基于动态数组实现,提供高效随机访问,但插入和删除元素较慢;LinkedList使用双向链表,插入和删除快速,但随机访问效率低;Vector与ArrayList类似...
4. 集合框架中的ArrayList、Vector和LinkedList的区别。这三种都是集合框架中用来存储数据的类,但其内部实现和性能特点各有不同。ArrayList和Vector都是基于数组的,Vector是线程安全的,而ArrayList不是。...
List接口的实现类包括ArrayList、LinkedList和Vector。ArrayList是一个基于数组实现的列表,提供了快速的随机访问,但插入和删除操作相对较慢。LinkedList通过链表结构实现,对于插入和删除操作有较高的效率,但随机...