java list子类_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 link = new LinkedList();

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

{

System.out.println("get:"+link.get(x));

}

/*for(int x=0; x

{

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 coll)

{

Iterator 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值