您的位置:首页 > 职场人生

关于集合List的总结

2015-05-09 09:55 155 查看
1、体系结构

├List 

├LinkedList(重点) 

├ArrayList (重点)

└Vector 

2、List

a) List集合判断元素是否相同,依据是元素的equal方法

b) List集合特有的迭代器是ListIterator,ListIterator是Iterator的子接口。在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException异常。

如果想要其他的操作(如添加元素、修改元素)就使用ListIterator

3、ArrayList

底层的数据结构使用的是数组,线程不同步。

代码示例:

package collection;
import java.util.*;
public class ListDemo {

/**
* @param args
*/
public static void main(String[] args) {
ArrayList al=new ArrayList();
//添加元素
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
//在指定的位置添加元素
al.add(2, "java002");
//删除指定位置的元素
al.remove(2);
///修改元素
al.set(3, "java0004");
/*
for(int x=0;x<al.size();x++)
{
sop(al.get(x));
}

Iterator it=al.iterator();
while(it.hasNext())
sop(it.next());
*/
//通过indexOf获取对象的位置

ListIterator li=al.listIterator();
while(li.hasNext())
{
Object obj=li.next();
if(obj.equals("java02"))
//li.add("java00002");
li.set("22222222");
}
sop(al);
while(li.hasPrevious())
{
sop(li.previous());
}

}
public static void sop(Object obj)
{
System.out.println(obj);
}

}


4、LinkedList

底层的数据结构使用的是链表‘

特有方法:

1)添加元素

a) addFist(E e) //头插

b) addLast(E e) //尾插

a) offerFirst((E e)//在此列表的开头插入指定的元素。

b) offerLast(E e)//在此列表的结尾插入指定的元素。

2)获出元素

a) getFirst() //获取头元素

b) getLast() //获取尾元素

c) removeFirst()//获取头元素,但是删除该元素

d) removeLast()//获取尾元素,但是删除该元素

e) peekFirst()//获取头元素,但不删除元素,如果没有元素会返回null

f) peekLast()//获取尾元素,但不删除元素,如果没有元素会返回null

a) pollFirst()//获取头元素,但删除元素,如果没有元素会返回null

b) pollLast()//获取尾元素,但删除元素,如果没有元素会返回null

代码示例:

 

package collection;

import java.util.*;

public class LinkedListDemo {

/**
* @param args
*/
public static void main(String[] args) {
LinkedList link=new LinkedList();
link.addLast("java01");
link.addLast("java02");
link.addLast("java03");
link.addLast("java04");
//获取第一个元素
sop(link.getFirst());
//获取最后一个元素
sop(link.getLast());
//获取第一个元素并且删除这个元素
sop(link.removeFirst());
//打印集合
while(!link.isEmpty())
//sop(link.removeFirst());
sop(link.removeLast());
sop(link);

}
public static void sop(Object obj)
{
System.out.println(obj);
}

}


5、Vector

底层的数据结构使用的是数组,线程同步。

取出特有方式是枚举,与迭代器相似,其实是一样的,因为枚举的名称以及方法都太长,所以被迭代器取代了。

代码示例:

 

package collection;

import java.util.*;
/*
* Vector 特有的方法:枚举
*
*
*/
public class VectorDemo {

/**
* @param args
*/
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.nextElement());
}

}

}


6、实例一:用LinkedList模拟一个堆栈数据结构

代码示例:

package collection;
import java.util.*;
/**
*
*使用LinkedList模拟一个堆栈
*
*/
public class Stack {
//定义一个集合
private LinkedList link;
Stack()
{
link=new LinkedList();
}
//头插法添加元素
public void myAdd(Object obj)
{
link.addFirst(obj);
}
//获取链表中开头处元素并删除
public Object myGet()
{
return link.removeFirst();
}
//判断是否为空
public boolean isNull()
{
return link.isEmpty();
}

}


7、实例二:用LinkedList模拟一个队列数据结构

代码示例:

package collection;
import java.util.*;
/**
*
* 使用LinkedList模拟一个队列
*
*/
public class Queue
{
//定义一个集合
private LinkedList link;
Queue()
{
link=new LinkedList();
}
//头插法添加元素
public void myAdd(Object obj)
{
link.addFirst(obj);
}
//获取链表中结尾处元素并删除
public Object myGet()
{
return link.removeLast();
}
//判断是否为空
public boolean isNull()
{
return link.isEmpty();
}
}


8、实例三:去除ArrayList集合中的重复元素

代码示例:

 

package collection;
import java.util.*;
public class ArrayListSingleElement {

/**
* @param args
*/
public static void main(String [] args)
{
ArrayList al=new ArrayList();
//添加元素
al.add(new PersonList("lisi01",22));
al.add(new PersonList("lisi01",22));
al.add(new PersonList("lisi02",32));
al.add(new PersonList("lisi02",22));
al.add(new PersonList("lisi02",22));
al=singleElement(al);
Iterator it=al.iterator();
while(it.hasNext())
{
PersonList pl=(PersonList)it.next();
sop(pl.getName()+":"+pl.getAge());
}

}
//去除重复元素
4000
public static ArrayList singleElement(ArrayList al) {
ArrayList newAl=new ArrayList();//定义一个临时容器
Iterator it=al.iterator();
while(it.hasNext())
{
Object obj=it.next();
if(!newAl.contains(obj))
newAl.add(obj);
}
return newAl;

}
//打印元素
public static void sop(Object obj)
{
System.out.println(obj);
}

}


 

 

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息