---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
List集合对象的特点:
List:
|----List:元素是有序的,元素可以重复。因为该集合体系有索引。
|----ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快,但是增、删稍慢(涉及下标的改变)。线程不同步。
|----LinkedList:底层使用的链表数据结构。特点:增删的速度很快,查询的速度稍慢。
|----vector:底层是数组数据结构。出现的早,在集合框架出现之前。无论增删还是查询都慢,被ArrayList淘汰,线程同步。
有关Vector的程序
import java.util.*;
/*
枚举就是Vector特有的取出方式。
枚举和迭代器很像
枚举和迭代是一样的。
因为枚举的名称和方法的名称都过长,所以被迭代器取代了,枚举就沉默了。
*/
class VectorDemo{
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());
}
}
}
有关LinkedList的程序
LinkedList特有方法
addFirst();
addLast();
获取元素,但不删除元素,如果集合中没有元素,会出现NoSuchElementException
getFirst();
getLast();
获取元素,但删除元素。如果集合中没有元素,会出现NoSuchElementException
removeFirst();
removeLast();
在JDK1.6出现了替代方法
添加元素
offerFirst();
offerLast();
获取元素,但不删除元素。如果集合中没有元素,会返回null;
peekFirst();
peekLast();
获取元素,但是会删除元素。如果集合中没有元素,会返回null。
pollFirst();
pollLast();
class LinkedListDemo{
public static void main(String[] args){
LinkedList link = new LinkedList();
link.addFirst("java01");
link.addFirst("java02");
link.addFirst("java03");
link.addFirst("java04");
link.addFirst("java00");
link.addLast("java05");
link.offerFirst("java007");
sop(link);
sop(link.removeFirst());
//遍历
while(!link.isEmpty()){
sop(link.removeFirst());
}
}
public static void sop(Object obj){
System.out.println(obj);
}
}
使用LinkedList模拟一个堆栈或者队列数据结构。
堆栈:先进后出,如同水杯。
队列:先进先出,如同水管。First in First out ---- FIFO。
import java.util.*;
class Duilie{
private LinkedList link ;
//构造函数初始化的时候,建立一个链表。
Duilie(){
link = new LinkedList();
}
//每次都像头部添加元素
public void myAdd(Object obj){
link.offerFirst(obj);
}
//保证从尾部取出元素
public Object myGet(){
return link.pollLast();
}
public boolean isNull(){
return link.isEmpty();
}
}
class DuilieDemo{
public static void main(String[] args){
Duilie d = new Duilie();
d.myAdd("java00");
d.myAdd("java01");
d.myAdd("java02");
d.myAdd("java03");
while(!d.isNull()){
System.out.println(d.myGet());
}
}
}
将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
import java.util.*;
/*
将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
比如:存人对象。同名同年龄,视为同一个人。为重复元素
思路:
1.对人描述
2.定义容器,将人存入。
3.取出
*/
class Person{
private String name;
private int age;
Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public String toString(){
return "("+name+":"+age+")";
}
//重写equals方法是因为ArrayList的contains方法的底层是由equals方法实现的。
public boolean equals(Object obj){
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
}
class ArrayListDemo{
public static void sop(Object obj){
System.out.println(obj);
}
//实现ArrayList元素的过滤。
public static ArrayList singleElement(ArrayList list){
ArrayList newList = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext()){
Person p = (Person)it.next();
if(!newList.contains(p)){
newList.add(p);
}
}
return newList;
}
public static void main(String[] args){
ArrayList a = new ArrayList();
//添加对象
a.add(new Person("zhangsan",10));
a.add(new Person("lisi",14));
a.add(new Person("zhangsan",10));
a.add(new Person("zhaoliu",12));
a.add(new Person("lisi",14));
a.add(new Person("lisi",14));
sop(a);
sop(singleElement(a));
}
}
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详情请查看:http://edu.csdn.net