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

黑马程序员_Collection类集框架和Collections工具类

2014-07-05 23:01 155 查看

 ------- android培训java培训、期待与您交流!
----------

一、collection:存储对象的一种容器。
二、数组与集合的区别:
1)数组可以存储基本类型的数据,也可存储对象:而集合只能存储对象;
2)数组的长度是固定的,集合的长度是可变的;
3)数组里只能存储一种类型的数据,集合是可以存储多种不同类型的数据。
三、Colection中的一些常见的方法:
boolean  add(Object  obj)//添加元素
boolean  remove(Object  obj)//删除元素
void  clear()//清空集合
int size()//获取集合的长度
boolean  contains(Object  o)//判断集合中是否包含某个元素
retainAll(collection c)//取集合中的交集
四、collection的两大派系list和set
1)list:元素是有序的,可以出现重复元素,因为该集合有索引,它的下面又主要派生的小弟:
ArrayList:底层是数组数据结构,特点:查询速度快,而增删慢,是线程不同步的。
Linklist:底层使用的是链表数据结构,特点:增删快,查询慢;LinkList集合取出元素的方式具有与其他集合所特有的方式:listIterator(),它不仅可以对元素进行判断,取出和删除,同时,还可对元素进行添加和修改;另外,LinkList还提供了对该集合的首尾元素的添加,删除和获取的方法;
Vector:底层是数组数据结构,该线程是同步的,由于其特有的枚举的方式和迭代起的跌带的方式是一样的,而枚举的名字和方法的名称都过长而被ArrayList所替代;
2)set:此集合中的元素是无序的,不可以出现重复的元素,它和collection的方法是一致的,它所派生出来的小弟主要是HashSet和TreeSet;
HashSet:底层是哈希标的数据结构,通过元素的HashCode和equals方法来判断是否是同一个元素的标志,如果元素的hashCode值不同,就不会再调用equals方法,直接返回不是同一个元素,而如果,元素的equals放法比较的结果相等,还的看一下,他们的hashCode的值是否相等,如果相等,则是同一个元素,否则,不是同一个元素;还有,对于判断元素是否存在和删除,依赖的方法也是hashCode和equals方法。
值得注意的是:当一个对象呗存进hashSet集合中以后,就不能修改这个对象中的那些参与计算哈希值的字段了,否则,对象修改后的哈希值与最初存进hashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去hashSet集合中检索该对象时,也将返回找不到该对象的结果,这也会导致无法从hashSet集合中单独删除当前对象,从而造成内存泄露。
TreeSet:底层是二叉树数据结构,它可以对set集合中的元素实现升序排列
3)TreeSet对集合元素排序的两种实现方式:
第一种方式:让元素自身具备比较性,元素必须实现comparable接口,并覆盖它的comparaTo()方法,通过compareTo方法的返回值是0,作为确保元素唯一性的依据,这种方式叫做元素的自然顺序,也叫默认顺序。
第二种排序方式:当元素自身不具备比较性,或者具备的比较性不是我们所需要的,这时就需要定义一个比较器,实现comparetor接口,并覆盖其中的compare方法,让集合已初始化,就具备比较性,并通过compare的方法返回值是0,来确保元素的唯一性。
注意:当在集合中同时出现了这两种比较方式时,要以比较器为主。
五、与collection根接口相对应的是map:该集合中存储的是键值对,是把数据一对一对的存入集合当中,并且要保证值的唯一性。它主要有三个实现小弟:
1)HashTable:底层是哈希表数据结构,不可以存入null键和null值,线程是同步的,jdk 
1.0规范
2)HashMap::底层是哈希表数据结构,该线程不同步,允许存入null键和null值,是jdk1.2的规范,
3)TreeMap:底层是二叉树数据结构该线程不同步

TreeMap类通过使用树实现Map接口。TreeMap提供了按排序顺序存储“关键字/值”对的有效手段,同时允许快速检索。应该注意的是,不像散列映射,树映射保证它的元素按照关键字升序排序。
注意:map集合中,添加元素,如果出现相同的键,那么后添加的值会覆盖原有的键对应的值,put方法返回被覆盖的值。
六、map中取出元素的两种方式:
1)keySet():将map中的所有的键存入到set集合,因为set集合具备迭代器,可通过迭代方式取出所有的键,再用get方法,获取每个键对应的值。
2)map.entry():将map集合中的映射关系存入到set集合中,而这个关系的类型就是Map.entry类型。通过迭代的方式取出每一个这样的映射关系,再通过这种关系的getKey()和getValue()方法获取集合中的每一个键和值。
七、collections集合工具类:
Collections.fill(list,”pp”)将list集合中的所有元素替换成指定元素
Collections.replaceAll(list,oldvalue,new value)将集合中的两个值替换
Collections.reverse(list)将集合反转
Collections.sort(listlist)根据元素的自然顺序对指定列表按升序排列
Collections.sort(list,new comparator)根据指定比较器对指定list集合进行排序
Collections.reverseOrder()颠倒次序
Collections.swap(list,index1,index2)对list集合中的角标位置置换
Collections.shuffe(list)把list集合中的元素随机排放
Collections与collection的区别:collections是工具类,它里面封装了有关collection集合的各种操作的静态方法;而collection是一个容器,是对集合这一类事物的描述。
 ------- android培训java培训、期待与您交流!
----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐