---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------GUI编程
Java-集合对象Collection
|--List:元素是有序的,元素可以重复,因为该集合体系有索引
|--ArrayList:底层使用的数据结构是数组结构,查询速度很快,但是增
删稍慢,线程不同步。
|-LinkedList:底层使用的数据结构式链表,增删速度很快,查询稍慢。
|-Vector:底层是数组数据结构,线程同步,被ArrayList替代了。
|--Set:元素是无序的,元素不可以重复
|--HashSet:此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实
例)支持
HashSet是如何保证元素的唯一性呢?
是通过元素的两个方法,hashCode和equals来完成的,如果元素的
HashCode值相同,才会判断equals是否为true,如果元素的HashCode值不相同,则不会调用
equals。
|--TreeSet:可以对Set集合中的元素进行排序
底层数据结构为二叉树,保证元素唯一性的依据:compareTo方法return
0 。
TreeSet排序的第一种方式:让元素 自身具有可比性,元素需要实现
Comparable接口,覆盖compareTo方法。这种排列方式称为自然顺序,或者叫做默认顺序。
TreeSet排序的第二种方式:当元素自身不具有比较性时,或者具备的比
较性不是所需的,这时就需要让集合自身具有可比性,可以通过构造方法:
TreeSet(Comparator<? super E> comparator)来实现,该构造方法构造一个新的
空 TreeSet,它根据指定比较器进行排序。
List:特有方法,凡是可以操作脚标的方法都是该体系特有的方法
共有方法 :
增:
add(index,element)
add(index,Collection)
删:
remove(index)
改:
set(index,element)
查:
get(index)
subList(from,to)
iterator()
ListIterator()
List集合特有的迭代器:ListIterator是Iterator的子接口。
在进行迭代操作时,不可以通过集合对象的方法操作集合中的内容,否则会发生
ConcurrentModificationException异常。所以,在进行迭代操作时,只能用迭代器的方法
来操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出和删除的操作。如果
想要其他的操作,诸如添加,修改等,就需要其子接口:ListIterator
该接口只能通过List集合的listIterator方法获取。
LinkedList:
List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。
除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert
元素提供了统一的命名方法。
void addFirst(E e)
将指定元素插入此列表的开头。
void addLast(E e)
将指定元素添加到此列表的结尾。
boolean offerFirst(E e)
在此列表的开头插入指定的元素。
boolean offerLast(E e)
在此列表末尾插入指定的元素。
E peekFirst()
获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
E peekLast()
获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
E pollFirst()
获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
E pollLast()
获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。
去除ArrayList集合中的重复元素
import java.util.*;
class ArrayListTest{
public static void main(String[] args){
System.out.println();
}
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;
}
}
TreeSet自定义排序练习
import java.util.*;
class TreeSetTest{
pulic static void main(String[] args){
TreeSet ts = new TreeSet();
ta.add();
ta.add();
ta.add();
Iterator it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
class StringLength implements Comparator
{
public int compare(Object o1, Object o2){
String s1 = (String)o1;
String s2 = (String)o2;
if(s1.length()>s2.length())
return 1;
if(s1.length()==s2.length())
return s1.compareTo(s2);
return -1;
}
}