集合框架知识总结

collection

  collection接口是集合框架的最父类

接口,定义了一些最共性的方法;

  例如:add ();  remove();  isEmpty();  size();  clear();  contains();  

  addAll();  containsAll();  removeAll();删除所有相同元素  retainAll();保留所有相同元素

  注:带有All的方法传入的参数基本都是集合;

 

Iterator

  Iterator是集合的迭代器对象;抽取了所有集合的取出的共性(一个一个的取出);

  Iterator中只有三个方法:hasNest();  next();  remove();

  集合中会有iterator()方法来获取集合迭代器对象。

  例如:  

Iterator it = coll.iterator();

for(Iterator it = coll.iterator() ; it.hasNext(); ){ //开发时使用这for循环个迭代。   
}

 

集合框架细节:

  集合中存入基本数据类型时基本数据类型自动装箱。

  集合中存储的是对象的引用。

  集合执行add()方法后,存入的类型提升为Object,取出后应当强转。(可以使用泛型解决强转问题)

 

List集合:

  特点是:带索引,元素可以重复,操作都是基于索引来的;

  List中有一个特殊的迭代器:ListIterator  可以在迭代过程中修改元素。

//List 集合中含有一个  listIterator();  用于获取Iterator对象
ListIteraoor it = new ListIterator()

 

LinkedList集合:

  特点:数据结构是链表,  增加删除比较快, 查询比较慢;  不同步

  LinkedList集合中的方法基本都是针对链表的头/尾来操作的,所以可以用于实现堆栈,队列数据结构;

ArrayList集合:

  特点:可增长的数组结构,查询快,增删慢;        不同步

  ArrayList集合中的方法针对索引操作;

 

Set集合:

  特点:无重复元素,但是不保证元素的顺序(输入和输出的一致性);

HashSet集合:

  特点:使用了Hash表的Set集合;

  注意: 1:出入元素时首先判断元素对象的hasfCode()函数返回结果是否一致;

      2:然后判断对象的equals()函数的返回值是否一致;

      ##如果hashCode()和equals()判断都一致--->元素是相同的;

  ####如果存入的自定义的数据类型,并需要按照特定的元素一致标准

       在自定义对象中复写  hashCode(),和equals();可以使用ctel+alt+s选中自动添加 

TreeSet集合:

  特点:集合内部实现了排序,使用的二叉树结构

  TerrSet使用add()函数时会对元素进行排序,内部实现会对元素进行排序时

            将需要存入的对象转为Comparable类型然后使用compareTo()方法进行对象的比较大小;

  需求:需要对存入TreeSet集合的自定义的对象进行自定义排序算法:  

      1:(自然排序)将自定义对象实现Comparable接口并复写compareTo()方法

         注意:复写compareTo()方法时需要 判断主要条件后判断次要条件,最终判断大小;

      2:(比较器排序)在定义TreeSet集合时在构造函数中传入一个自定义的比较器对象;

         首先定义自己的比较器类,实现Comparator接口并重写compare()方法,将Comparator子类对象传入TreeSet构造函数中;

       自然排序接口: Comparable接口,compareTo()方法;   使用在被排序的类上;

       比较器接口:  Comparator接口,compare()方法;    使用在自定义的比较器类;

    

public int compare(Object o1,Object o2){
    String s1 = (String )o1;
    String s2 = (String )o2;
    int temp = s1.lenth()-s2.length();    //判断主要条件
    return temp == 0 ? s1.compareTo(s2) : temp;    //判断次要条件      
}

 

LinkedHashSet集合:  

    特点:查询效率高,存储的内容有序(存入取出一致)唯一;

     Linked-->存入有序;   Hash-->查询高效  Set-->元素唯一        Tree-->元素以排序  list-->含有索引

 

Map集合:

  Map<String,String>  map = new Map<String,String>();

  添加并返回:String s = map.put("星期一","monday");   //返回前一个

  查询并返回:String value = map.get("星期一");

  删除并返回:String s = map.remove("星期一");

  .........

  ###两种返回Map集合的方法:

      1:使用Map集合的keySet(); 返回Map集合中的所有Key值到Set集合中;     遍历含有key的Set集合

        

//获取存放key值得Set集合
Set<String> keys = map.keyset();
//获取Set集合的迭代器
Iterator<String>  it  =  keys.iterator();
//迭代获取key值,配合get();取出value值

 

      2:使用Map集合的entrySet()方法获得Map.Entry()对象的Set集合。       遍历含有Map.Entry对象的Set集合

         Map.Entry类型是Map集合的内部类,是Map的映射关系的对象       

//获取存放Map.entery的set集合
Set<map.Entry<String,String>>  entrySet = map.entrySet();
//获取Set集合的迭代器,迭代取处Map.Entry
Iterator<map.Entry<String,String>> it = entrySet.iterator(); 
//接下来使用Map.Entry 的方法取出key ,value;

 

      keySet()  ---->    key的Set集合

       map.enrtySet()  -----> Map.entry的Set集合

 

COllections工具类

  Collections工具类里面包含了一些针对集合操作的方法,在操作集合时需要方法时可以去看;

  里面有一些很重要的方法:

    例如:      

    Collections.syschronizedList()方法     为ArrayList等集合加锁;

  List list = Collections.syschronizedList(new ArrayList(.....));        

      对排序逆序

      求集合元素的最值

Arrays工具类

  用于操作数组的工具类

  代表方法有  数组转集合函数 可以使用集合的方法操作数组    

int [] arr = new int{2,5,6,7,26};
List list = Arrays.asList(Arr);

  数组转集合函数中,得到的集合的长度是固定长度的(由于数组的长度是不可变的)

    使用asList时: 如果数组中的元素是基本数据类型--->集合中存入的是数组对象;

            如果数组中存放的是引用数据类型---->集合中存放的是由数组中的对象转成的集合元素;

 

   

 

posted on 2016-06-14 23:06  笑明子  阅读(1600)  评论(0编辑  收藏  举报

导航