java集合篇

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


java集合类主要由两个接口派生:Collection和Map,是集合框架的根接口。


一.Collection集合介绍

Collection的常见方法:

      1,添加。

      boolean add(Object obj):

      boolean addAll(Collection coll):

      2,删除。

      boolean remove(object obj):

      boolean removeAll(Collection coll);

      void clear();

      3,判断:

      boolean contains(object obj):

      boolean containsAll(Colllection coll);

      boolean isEmpty():判断集合中是否有元素。 

      4,获取:

      int size():

      Iterator iterator():取出元素的方式:迭代器。

      该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。

所以该迭代器对象是在容器中进行内部实现的。

      对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,

也就是iterator方法。

      Iterator接口就是对所有的Collection容器进行元素取出的公共接口。

其实就是抓娃娃游戏机中的夹子!

      5,其他:

      boolean retainAll(Collection coll);取交集。

      Object[] toArray():将集合转成数组。 


Collection接口的结构:

      Collection

          |--List:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复。

         |--Set:元素不能重复,无序。

List接口介绍:

      List 接口继承了 Collection 接口以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。

      (1) 面向位置的操作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所在的位置

      (2)   List 接口不但以位置序列迭代的遍历整个列表,还能处理集合的子集:

      ListIterator listIterator() : 返回一个列表迭代器,用来访问列表中的元素

      ListIterator listIterator(int index) : 返回一个列表迭代器,用来从指定位置index开始访问列表中的元素

      List subList(int fromIndex, int toIndex) :返回从指定位置fromIndex(包含)到toIndex(不包含)范围中各个元素的列表视图


LinkedList类和ArrayList类

      在“集合框架”中有两种常规的 List 实现:ArrayList 和 LinkedList。使用两种 List 实现的哪一种取决于特定的需要。如果要支持随机访问,而不必在除尾部的任何位置插入或除去元素,那么,ArrayList 提供了可选的集合。但如果,要频繁的从列表的中间位置添加和除去元素,而只要顺序的访问列表元素,那么,LinkedList 实现更好。


Set接口介绍

      Set 接口继承 Collection 接口,而且它不允许集合中存在重复项,每个具体的 Set 实现类依赖添加的对象的 equals()方法来检查独一性。Set接口没有引入新方法,所以Set就是一个Collection,只不过其行为不同。


Comparable接口和Comparator接口

      在“集合框架”中有两种比较接口:Comparable接口和Comparator接口。像String和Integer等Java内建类实现Comparable接口以提供一定排序方式,但这样只能实现该接口一次。对于那些没有实现Comparable接口的类、或者自定义的类,可以通过Comparator接口来定义自己的比较方式。


Comparable接口

      在java.lang包中,Comparable接口适用于一个类有自然顺序的时候。假定对象集合是同一类型,该接口允许把集合排序成自然顺序。

      int compareTo(Object o): 比较当前实例对象与对象o,如果位于对象o之前,返回负值,如果两个对象在排序中位置相同,则返回0,如果位于对象o后面,则返回正值

      利用Comparable接口创建自己的类的排序顺序,只是实现compareTo()方法的问题。通常就是依赖几个数据成员的自然排序。同时类也应该覆盖equals()和hashCode()以确保两个相等的对象返回同一个哈希码。


Comparator接口

      若一个类不能用于实现java.lang.Comparable,或者不喜欢缺省的Comparable行为并想提供自己的排序顺序(可能多种排序方式),可以实现Comparator接口,从而定义一个比较器。

      (1)int compare(Object o1, Object o2): 对两个对象o1和o2进行比较,如果o1位于o2的前面,则返回负值,如果在排序顺序中认为o1和o2是相同的,返回0,如果o1位于o2的后面,则返回正值

      (2)boolean equals(Object obj): 指示对象obj是否和比较器相等。


HashSet类类和TreeSet类

      “集合框架”支持Set接口两种普通的实现:HashSet和TreeSet(TreeSet实现SortedSet接口)。在更多情况下,使用 HashSet 存储重复自由的集合。考虑到效率,添加到 HashSet 的对象需要采用恰当分配哈希码的方式来实现hashCode()方法。虽然大多数系统类覆盖了 Object中缺省的hashCode()和equals()实现,但创建自己的要添加到HashSet的类时,别忘了覆盖 hashCode()和equals()。

      当要从集合中以有序的方式插入和抽取元素时,TreeSet实现会有用处。为了能顺利进行,添加到TreeSet的元素必须是可排序的。


HashSet类

      (1) HashSet(): 构建一个空的哈希集

      (2) HashSet(Collection c): 构建一个哈希集,并且添加集合c中所有元素

      (3) HashSet(int initialCapacity): 构建一个拥有特定容量的空哈希集

      (4) HashSet(int initialCapacity, float loadFactor): 构建一个拥有特定容量和加载因子的空哈希集。LoadFactor是0.0至1.0之间的一个数


TreeSet类

      (1) TreeSet():构建一个空的树集

      (2) TreeSet(Collection c): 构建一个树集,并且添加集合c中所有元素

      (3) TreeSet(Comparator c): 构建一个树集,并且使用特定的比较器对其元素进行排序

      comparator比较器没有任何数据,它只是比较方法的存放器。这种对象有时称为函数对象。函数对象通常在“运行过程中”被定义为匿名内部类的一个实例。

      TreeSet(SortedSet s): 构建一个树集,添加有序集合s中所有元素,并且使用与有序集合s相同的比较器排序


Map集合介绍

      Map接口是一组成对的键-值对象,即所持有的是key-value pairs。Map中不能有重复的key。拥有自己的内部排列机制常用子集有HashMap,TreeMap

常用方法:
      1,添加。
      value put(key,value):返回前一个和key关联的值,如果没有返回null.

      2,删除。
      void  clear():清空map集合。
      value remove(key):根据指定的key翻出这个键值对。 

      3,判断。
      boolean containsKey(key):
      boolean containsValue(value):
      boolean isEmpty();

      4,获取。 
      value get(key):通过键获取值,如果没有该键返回null。
      当然可以通过返回null,来判断是否包含指定键。 
      int size(): 获取键值对的个数。 

      Map常用的子类:
      Hashtable :内部结构是哈希表,是同步的。不允许null作为键,null作为值。
      Properties:用来存储键值对型的配置文件的信息,可以和IO技术相结合。
      HashMap : 内部结构是哈希表,不是同步的。允许null作为键,null作为值。
      TreeMap : 内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。

      Map接口不是Collection接口的继承。Map接口用于维护键/值对(key/value pairs)。该接口描述了从不重复的键到值的映射。

Map.Entry接口

      Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。

      通过这个集合的迭代器,可以获得每一个条目(唯一获取方式)的键或值并对值进行更改。当条目通过迭代器返回后,除非是迭代器自身的remove()方法或者迭代器返回的条目的setValue()方法,其余对源Map外部的修改都会导致此条目集变得无效,同时产生条目行为未定义。

      (1) Object getKey(): 返回条目的关键字

      (2) Object getValue(): 返回条目的值

      (3) Object setValue(Object value): 将相关映像中的值改为value,并且返回旧值

3. HashMap类和TreeMap类

      “集合框架”提供两种常规的Map实现:HashMap和TreeMap (TreeMap实现SortedMap接口)。在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。使用HashMap要求添加的键类明确定义了hashCode()和equals()的实现。

这个TreeMap没有调优选项,因为该树总处于平衡状态。

HashMap类

      (1) HashMap(): 构建一个空的哈希映像

      (2) HashMap(Map m): 构建一个哈希映像,并且添加映像m的所有映射

      (3) HashMap(int initialCapacity): 构建一个拥有特定容量的空的哈希映像

      (4) HashMap(int initialCapacity, float loadFactor): 构建一个拥有特定容量和加载因子的空的哈希映像

TreeMap类

      (1)    TreeMap():构建一个空的映像树

      (2)    TreeMap(Map m): 构建一个映像树,并且添加映像m中所有元素

      (3)   TreeMap(Comparator c): 构建一个映像树,并且使用特定的比较器对关键字进行排序

      (4) TreeMap(SortedMap s): 构建一个映像树,添加映像树s中所有映射,并且使用与有序映像s相同的比较器排序

MapCollection的比较

      Map:一次添加一对元素。Collection 一次添加一个元素。

      Map也称为双列集合,Collection集合称为单列集合。

      其实map集合中存储的就是键值对。 

      map集合中必须保证键的唯一性。 




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值