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

来源:互联网 发布:有限元软件 编辑:程序博客网 时间:2024/04/30 08:01

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

一、collection:存储对象的一种容器。

二、数组与集合的区别:

1)数组可以存储基本类型的数据,也可存储对象:而集合只能存储对象;

2)数组的长度是固定的,集合的长度是可变的;

3)数组里只能存储一种类型的数据,集合是可以存储多种不同类型的数据。

三、Colection中的一些常见的方法:

boolean  add(Object  obj)//添加元素

boolean  remove(Object  obj)//删除元素

void  clear()//清空集合

int size()//获取集合的长度

boolean  contains(Object  o)//判断集合中是否包含某个元素

retainAllcollection c)//取集合中的交集

四、collection的两大派系listset

1list:元素是有序的,可以出现重复元素,因为该集合有索引,它的下面又主要派生的小弟:

ArrayList:底层是数组数据结构,特点:查询速度快,而增删慢,是线程不同步的。

Linklist:底层使用的是链表数据结构,特点:增删快,查询慢;LinkList集合取出元素的方式具有与其他集合所特有的方式:listIterator(),它不仅可以对元素进行判断,取出和删除,同时,还可对元素进行添加和修改;另外,LinkList还提供了对该集合的首尾元素的添加,删除和获取的方法;

Vector:底层是数组数据结构,该线程是同步的,由于其特有的枚举的方式和迭代起的跌带的方式是一样的,而枚举的名字和方法的名称都过长而被ArrayList所替代;

2set:此集合中的元素是无序的,不可以出现重复的元素,它和collection的方法是一致的,它所派生出来的小弟主要是HashSetTreeSet

HashSet:底层是哈希标的数据结构,通过元素的HashCodeequals方法来判断是否是同一个元素的标志,如果元素的hashCode值不同,就不会再调用equals方法,直接返回不是同一个元素,而如果,元素的equals放法比较的结果相等,还的看一下,他们的hashCode的值是否相等,如果相等,则是同一个元素,否则,不是同一个元素;还有,对于判断元素是否存在和删除,依赖的方法也是hashCodeequals方法。

值得注意的是:当一个对象呗存进hashSet集合中以后,就不能修改这个对象中的那些参与计算哈希值的字段了,否则,对象修改后的哈希值与最初存进hashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去hashSet集合中检索该对象时,也将返回找不到该对象的结果,这也会导致无法从hashSet集合中单独删除当前对象,从而造成内存泄露。

TreeSet:底层是二叉树数据结构,它可以对set集合中的元素实现升序排列

3TreeSet对集合元素排序的两种实现方式:

第一种方式:让元素自身具备比较性,元素必须实现comparable接口,并覆盖它的comparaTo()方法,通过compareTo方法的返回值是0,作为确保元素唯一性的依据,这种方式叫做元素的自然顺序,也叫默认顺序。

第二种排序方式:当元素自身不具备比较性,或者具备的比较性不是我们所需要的,这时就需要定义一个比较器,实现comparetor接口,并覆盖其中的compare方法,让集合已初始化,就具备比较性,并通过compare的方法返回值是0,来确保元素的唯一性。

注意:当在集合中同时出现了这两种比较方式时,要以比较器为主。

五、与collection根接口相对应的是map:该集合中存储的是键值对,是把数据一对一对的存入集合当中,并且要保证值的唯一性。它主要有三个实现小弟:

1HashTable:底层是哈希表数据结构,不可以存入null键和null值,线程是同步的,jdk  1.0规范

2HashMap::底层是哈希表数据结构,该线程不同步,允许存入null键和null值,是jdk1.2的规范,

3TreeMap底层是二叉树数据结构该线程不同步

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培训、期待与您交流! ----------

0 0
原创粉丝点击