`
LiYinlei
  • 浏览: 67848 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

List集合的子类ArrayList、LinkedList、Vector

阅读更多

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*/

 

 

 

 

0
0
分享到:
评论

相关推荐

    【后端】java基础(4.3)java中级基础之集合——Set

    我们今天要讲的是Collection的子类——List. List又有三个实现类: ArrayList LinkedList Vector 这三个都是list,至于什么是子类,我们会在对象那章去普及。他们三个相同点有: 都是list的实现类 都是有序的,也...

    Java 基础核心总结 +经典算法大全.rar

    ArrayList Vector LinkedList 类Stack HashSet TreeSet LinkedHashSet 类 PriorityQueue HashMap TreeMap 类 LinkedHashMap 类 Hashtable 类IdentityHashMap 类WeakHashMap 类 Collections 类集合实现类特征图 泛形 ...

    java8集合源码分析-CollectionDemo:自己复习集合框架时候的例子

    List---&gt;有序、有索引、元素可重复 1.ArrayList: 底层是数组结构、查询快、增删慢、不同步 添加第一个元素的时候,创建默认个数是10个,如果超出了10个,就创建一个长度为 10+10&gt;&gt;1=15的数组 2.LinkedList: 底层...

    突破程序员基本功的16课.part2

    3.3.1 Vector和ArrayList的区别 3.3.2 ArrayList和LinkedList的实现差异 3.3.3 ArrayList和LinkedList的性能分析和适用场景 3.4 Iterator迭代器 迭代时删除指定元素 3.5 小结 第4课 Java的内存回收 4.1 Java...

    进销存系统文档作业例子

    7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组...

    java面试宝典2012版.pdf

    65、去掉一个Vector集合中重复的元素 66、Collection 和 Collections的区别。 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 68、你所知道的集合类都有哪些...

    关于JAVA面试的100题及其答案

    7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组...

    超级有影响力霸气的Java面试题大全文档

    10、说出ArrayList,Vector, LinkedList的存储性能和特性  ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及...

    java 面试题 总结

    7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组...

    最新Java面试宝典pdf版

    65、去掉一个Vector集合中重复的元素 46 66、Collection 和 Collections的区别。 47 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 47 68、你所知道的集合类都...

    Java面试笔试资料大全

    65、去掉一个Vector集合中重复的元素 46 66、Collection 和 Collections的区别。 47 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 47 68、你所知道的集合类都...

    Java面试宝典2010版

    65、去掉一个Vector集合中重复的元素 66、Collection 和 Collections的区别。 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 68、你所知道的集合类都有哪些...

    Java面试宝典-经典

    65、去掉一个Vector集合中重复的元素 46 66、Collection 和 Collections的区别。 47 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 47 68、你所知道的集合类都...

    JAVA面试宝典2010

    65、去掉一个Vector集合中重复的元素 46 66、Collection 和 Collections的区别。 47 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 47 68、你所知道的集合类都...

    java面试题大全(2012版)

    65、去掉一个Vector集合中重复的元素 46 66、Collection 和 Collections的区别。 47 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 47 68、你所知道的集合类都...

    Java面试宝典2012版

    65、去掉一个Vector集合中重复的元素 46 66、Collection 和 Collections的区别。 47 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 47 68、你所知道的集合类...

    java面试宝典2012

    65、去掉一个Vector集合中重复的元素 50 66、Collection 和 Collections的区别。 51 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 51 68、你所知道的集合类都...

Global site tag (gtag.js) - Google Analytics