集合

在我看来集合就是一个容器,用于存放其他的数据。

集合的类和接口均放在util类中

 

集合框架的两大体系是:collection 和 map

List接口是Collection的子接口,里面的实现子类都是有序。

 

arrayList的本质:arrayList 就是一个长度可变的数组

常用方法为add(),remove(),set(),get(),indexOf(),contains(),iteractor(),size() 方法, 里面用的下标进行操作

 

LinkList的本质:LinkList 就是一个动态可变长度的双向链表

 

vactor本质: 线程安全,执行效率非常低, 常用方法同上,无非增删改查,不过可参数可以是对象的引用

 

如何进行迭代:

    Iterator it = collection.iterator(); // 获得一个迭代子
    while(it.hasNext()) {
      Object obj = it.next(); // 得到下一个元素
    }

 

 

Linked 改快读慢

 

Array 读快改慢

 

Hash 两都之间

 

Collection是集合接口
  

  |————Set子接口:无序,不允许重复。
    |————List子接口:有序,可以有重复元素。

 

    区别:Collections是集合类

 

    Set和List对比:
    Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
    List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

 

    Set和List具体子类:
    Set
     |————HashSet:以哈希表的形式存放元素,插入删除速度很快。

 

    List
     |————ArrayList:动态数组
     |————LinkedList:链表、队列、堆栈。

 

 
    Vector是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。

 

HashSet:
  内部是HashMap的一个实例,存的是key的集合。
  元素的表现是无序的,但一旦添加完元素,元素位置是固定的(也就是说你无论再运行多少遍,这个显示的顺序都一样),再添加新元素,不会影响前面元素的位置,给添加的元素分配位置,只要不打乱前面的元素位置,前面的元素位置就不会再发生变化。

方法:add(), clear(), remove() 没有下标,contains(), iteractor(), size()

LinkHashSet 和 HashSet的。。

TreeSet:

   确保元素处于排序状态,底层为树结构。使用它可以从Set中提取有序的序列。

 

   两种排序方法:自然排序和定制排序,默认采用自然排序。
   自然排序:会调用集合元素的comparaTo(对象)方法来比较元素之间的大小关系,然后把集合按升序排列(实现 Comparable接口)。
   定制排序:通过Comparator(比较器)接口,需要重写compara(对象,对象),要实现定制排序,需要把comparator实例作为形 参传给TreeSet的构造器。
   要想把元素放到TreeSet中,必须实现Comparable接口,同时必须实现comparaTo方法。
   或者继承Comparator接口,然后重写compara方法

Map集合:维护"键值对"的关联性

   key,value 必须都为引用类型数据
   key不可以重复(后覆盖先)

常用方法:  put(),  remove(), putAll(), clear()

关于map的迭代方法

 

 

TreeMap:

 

  有序。 基于红黑树数据结构的实现。查看"键"或"键值对"时,它们会被排序(次序由Comparabel或Comparator决定)。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。
 HashTable:

 

   最古老,不允许key和value值为null

 

Properties:
  是HashTable的子类,用来处理文件的属性。
  文件属性必须是key_value,必须都是字符串,存取数据用put(key,value),get(key)。

 

Collections:
  集合操作类
  排序:reverse(list) 反序,shuffle()随机,sort()自然顺序升序,swap(对象,位置,位置)交换
  查找:
  max(),min(),copy(目标list,srclist),Collections.repalceAll(list,old对象,new对象)

 

 

1.按照存入顺序排序->arraylist, vector,        linklist

 

2.键值对无序(hashcode)存入:hashmap, hashSet(方法不同,但set底层为map)

 

3.单值无序(hashcode)存入:treeSet, Treemap(同上)

 

 

New HashMap

1.常用方法统计:

.put,.remove , .keySet, .entrySet, .get, .getKey, .getValue

常用于:(基于new HashMap)增、删、遍历

 

New HashSet

1.重写equal:            hashcode

2.常用方法统计:

.add, .remove, .iterator, .hasnext, .next

 

共同特点:无序是指用hashcode去排序,不重复性,

 

 

New Stack:

1.常用方法:

.push, .pop,.empty

作用:模仿先进后出的栈。

 

New vector:

1.常用方法:

 .add, .remove, .isEmpty

作用:模仿向量,删除从坐标删除到结尾

特殊点:方法同步,所以比Arraylist更加安全

 

New TreeMap:

1.重写compareble --compareTo  comparetor

关于对比对象类方法 .getClass.equal  or   instanceOf  ,用前强转

= 0   > 1   <-1

2.常用方法:

.put, .remove, .iterator, .hasnext, .next, .keySet, .entrySet

 

New TreeSet:

1.重写comparable-- compareTo     comparetor

2.其他与hashSet一致

 

其他方法论述:

.size:   map里面是无重复的key数 ,常用于list 根据下标循环输出

 

 

List论述:

1.方法分析:

.remove, .add , .set, 参数带有坐标, . indexOf可以查元素坐标

linkList, arrayList 使用方法相一致,选择要注意更偏向于增删还是改查

 

 

 

 

 

 

 

 

posted @ 2017-11-22 17:36  老螃蟹  阅读(115)  评论(0编辑  收藏  举报