集合框架小结

Collection(java.util.Collection)是集合框架结构的根接口,该接口继承自超级接口Iterator,Collection实现的子接口有List,Set,Queue等。
Collection提供了实现增,删,改,查等数据结构基本操作的方法,下面简单列出几个用过的方法:
(1) add(E e),插入元素,返回值是boolean型,如果插入成功则返回true;
(2) contains(Object 0),检查是否包含某元素,返回一个boolean值;
(3) clear(),移除所有元素,无返回值;
(4) size(),返回该Collection的元素数,返回值为int;
(5) toArray(),将Collection中所有元素存放在数组中,返回值为该元素数组

List接口的实现类有ArrayList等,Set接口实现的类有HashSet,TreeSet等,两者区别在于前者是有序的,可以有重复,访问元素可通过索引实现,而后者是无序的,且无重复。
由于是子类,上述方法ArrayList,HashSet,TreeSet都可以实现,但特征不同,又有一些不同的方法。ArrayList多了一些应用的索引的方法,如add(int index,E element)在列表指定位置上插入指定元素,get(int index)可返回指定位置上的元素,set(int index,E element)用指定元素替代指定位置的元素。
HashSet中元素不能重复,所以同一元素只能插入一次,如果新插入的元素已存在,则add(E e)返回值为false.
ArrayList中元素顺序与插入时一样,而HashSet根据哈希特算法重新给元素排序,故取出的元素可能是“乱序的”。TreeSet又与HashSet有一定的差别,其中元素顺序会因构造方法不同而不同,如果是构造方法TreeSet()创建的对象,那么其元素根据自然顺序排序,如果在创建对象是传入一个Comparator(比较器),则按照指定比较器给元素排序。

Collection中存放的数据都是单线型的,如果想把有对应关系的两种数据存放在一起就要到Map<K,V>(java.util.Map<K,V>)接口(这两个接口没有继承关系)了,K表示键,V表示值,K相当于学生数据库里的学号,是不能重复的,V则是K所指向的值,可以重复。
Map的基本操作有: (1)put(K key,V value),插入指定关联的键和值,返回V值;
(2)clear(),移出所有映射;
(3) get(Object key),返回指定键所映射的值V
(4)keySet(),返回此映射包含的键的Set视图,返回值是一个
Set<K>对象
(5)size()返回此映射中的键-值映射关系数
Map的实现类有HashMap,TreeMap等,对于TreeMap可以这样理解,Map中的K值本来就是一个无重复的Set集合,那么TreeMap中的K元素集合就是一个TreeSet,所以操作方法跟treeset相似,就不细说了。

最后说说,从set中取出元素的三种方法,大致可以一次类推。
(1) 前面说过Collection继承自Iterable接口,这个接口中有一个iterator()方法,返回值是一个iterator(迭代器)对象,调用iterator的next()方法可以取出集合容器中的元素。(Map并没有继承Iterable接口,所以不能直接生成迭代器。)
(2)用一个奇特的for循环:for(Object o:set){},o表示取出的元素,set是操作的集合对象,方法体中的得到的就是一个一个的元素,
例: public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet<Integer> set=new TreeSet<Integer>();
Random r=new Random();
for(int i=0;i<10;i++){
int x=r.nextInt(20);
set.add(x);
}
for(int x:set){
System.out.print(x+" ");
}
}
执行结果是: 0 2 7 11 12 14 15 19
(3) 调用toArray方法先把set对象转换成Object数组中,在将该数组复制到指定类型的数组中 ,for循环取出
Map中虽然没有iteratora方法,但是可以先调用keyset()方法取得相应的set对象在操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值