zoukankan      html  css  js  c++  java
  • 集合框架知识总结

    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时: 如果数组中的元素是基本数据类型--->集合中存入的是数组对象;

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

       

  • 相关阅读:
    [UVa514] Rails
    今日才真正懂了BFS
    [UVa11292] Dragon of Loowater
    [UVa] TEX Quotes
    白书杂七杂八
    [OpenJudge] Feed_Accounting
    [OpenJudge] Jolly_Jumpers
    Restart
    Collection of Websites
    Oracle11完全卸载方法
  • 原文地址:https://www.cnblogs.com/Xmingzi/p/5585799.html
Copyright © 2011-2022 走看看