集合框架(二、List集合)

2 篇文章 0 订阅
1 篇文章 0 订阅

List:

元素是有序的,元素可以重复。因为该集合体系系有索引。
ArrayList : 底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
LInkedList: 底层使用的是链表结构。特点:增删很快,但是查询稍慢。
Vector : 底层是数组数据结构。线程不同步.


特有方法:


add(index, Collection);
addAll(index, Collection);

remove(index);

set(index,element);


get(index);
subList(from,to);
listIterator();


ListIterator:
List集合特有的迭代器。ListIterator是Iterator的子接口。在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生并发异常。所以在迭代时只能用使用迭代器的方法操作元素,可是Iterator的方法是有限的,只能对元素进行判断,取出,删除的操作。如果想要进行其他的操作,如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的Iterator方法获取。

public static void listDemo()
{
	
	for(ListIterator li  = al.ListIterator; li = al.hasNext();)
	{
		Object obj = li.next();
		if(obj.equals("java02"));
				li.add("java009");
				li.set("java006");
	}
}

LinkedList:特有方法:
添加:
addFrist();
addLase();

获取元素,但是不删除元素。如果集合中没有元素,会出现NoSuchElementException
getFirst();
getLast();

获取元素,但是元素被删除。如果集合没有元素会出现NoSuchElementException 。
removeFirst();
removeLast();
在JDK1.6出现替代方法。
添加:
offerFirst();
offerLast();

获取元素,但是不删除元素。如果集合中没有元素,会出现null
peekFirst();
peekLast();

获取元素,但是删除元素。如果集合中没有元素,会出现null
pollFirst()
pollLast();


Test
使用LinkedList模拟一个堆栈或者队列结构。
堆栈: 先进后出 。 队列:先进先出。

 import java.util.*;
class DuiLie
{
	private LinkedList link;

	DuiLie()
	{
		link = new LinkedList();
	}

	public void myAdd(Object obj)
	{
		link.addFirst(obj);
	}

	public Object myGet()
	{
		return link.removeLast(); 
	}

	public boolean isNull()
	{
		return link.isEmpty();
	}
}
class LinkedListTest
{
	public static void main(String[] args)
	{
		DuiLie dl = new DuiLie();
		dl.myAdd("java01");
		dl.myAdd("java02");
		dl.myAdd("java03");
		dl.myAdd("java04");
		dl.myAdd("java05");

		while (!dl.isNull())
		{
			System.out.println(dl.myGet);
		}

	}

去除ArrayList中元素重复的问题

	public static ArrayList singleElement(ArrayList al)
	{
		//定义临时容器
		ArrayList newAl = new ArrayList();

		for (Iterator it=al.iterator();it.hasNext() ; )
		{
			Object obj = it.next();

			if(! newAl.contains(obj))
				newAl.add(obj);
		}
		return newAl
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值