---------------------- <ahref="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<ahref="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
集合:
collection的操作:
1.添加元素:add()
2.删除元素:remove();
3.清空集合:clear();
4.去两个集合的交集:retainAll(collection e )
5.迭代器 Iterator :结合取出元素的方式
Collection e = new Collection();
Iterator it = e.iterator();
while(it.hasnext())
{
Objectobj = it.next();
}
for(Iteratorit = e.iterator();it.hasnext();)
{
Objectobj = it.next();
}
collection:
|--List:元素是有序的,元素可以重复。因为该集合体系有索引。
|--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度快,但是增删速度慢,线程不同步。
|--LinkedList:底层的数据结构使用的是链表结构。特点:增删速度慢,但是查询速度慢
|--Vector:底层是数组数据结构。线程同步的,被ArrayList替代了。
|--set:元素是无序的,元素不可以重复
|--HashSet:底层数据结构是哈希表。线程是非同步的。
HashSet是如何保证元素的唯一性的?
是通过元素的两个方法,hashCode和equals来完成的。如果元素的hashcode值相同,才会判断equals是否为true。如果元素的hashcode值不同,不用判断是否相同。
注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
|--TreeSet:底层数据结构是树。
可以对set集合中的元素进行排序。
自定义对象需要实现comparable接口中的comparableTo方法。
List:
特有的方法:凡是可以操作角标的方法都是该体系的特有方法.
增:add (index,element);
addAll(index,Collection);
删:remove (index);
改:set (index,element);
查: get(index);
subList(from,to);
还可以for循环遍历list;
通过indexof 获取对象位置
indexof(element);
list集合特有的迭代器:listIterator是Iterator的子接口
在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生concurrentModificationExceptiony异常。
所以,在迭代器时只能用迭代器的方法操作元素,可是Iterator方法有限的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口ListIterator
该接口只能通过List集合的ListInterator对象实现
LinkedList特有方法: 1.6 以后出现新的方法了
addFirst();头插法
addLast();尾插法
getFirst();获取头元素,如果集合中没有元素会出现NoSuchElementException
getLst();获取尾元素,如果集合中没有元素会出现NoSuchElementException
removeFirst();获取后删除,如果集合中没有元素会出现NoSuchElementException
removeLast();
使用Linklist 模拟栈和队列结构。
TreeSet:可以对set集合中的元素进行排序,底层数据结构是二叉树,保证唯一性的依据是compareTo方法return 的值。
TreeSet排序的第一种方式是:让元素自身具备比较性,元素需要实现comparable接口,覆盖compareTo的方法。这种方式也成为元素的自然顺序也叫做默认排序。
TreeSet排序的第二种方式是:当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时候需要让集合自身具备比较性。-----定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。
当两种排序都存在时,以比较器为主。
如何定义一个比较器:定义一个类,实现comparator接口,覆盖compare方法。
例题:按照字符串长度排序:
class StrLenComparator implements Comparator
{
publicint compare(Object o1,Object o2)
{
Strings1 = (String ) o1;
Strings2 = (String ) o2;
int num = newInteger(s1.length()).compareTo(new Integer(s2.length()));
if(num==0) return s1.compareTo(s2);//次要条件
returnnum;
}
}
---------------------- <ahref="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<ahref="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://www.itheima.com"target="blank">www.itheima.com</a>