<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 0, comments - 77, trackbacks - 0, articles - 356
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    package com.semovy.test;

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.Comparator;
    import java.util.HashSet;
    import java.util.LinkedHashSet;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.ListIterator;
    import java.util.SortedSet;
    import java.util.TreeSet;

    /**
     *
     * @author semovy@gmail.com
     *  Collection
     *  |        |
     *  List    Set______________________________________________
     *  |__________                      |       |               |
     *  |          |                     |       |               |
     *  ArrayList  LinkedList        HashSet   LinkedHashSet     SortedSet
     *                                                           |
     *                                                           TreeSet
     */
    public class CollectionTest {
    /* Set容器中的對(duì)象是唯一的,所以加入Set容器的對(duì)象,必須重新equals()方法.作為唯一性的標(biāo)識(shí)
     * HashSet的排序規(guī)則是利用HashTable,所以HashSet容器的對(duì)象必須重新定義hashCode()方法
     * 利用hashCode()方法,可以讓快速找到容器中的對(duì)象,在比較兩加入到容器中的對(duì)象是否相同時(shí),會(huì)比較
     * hashCode()方法返回是否相同,如果相同,則再利用equals()方法比較,如果兩者都相同,則被看作相同的對(duì)象
     * String 對(duì)象的hashCode(),equals已經(jīng)被重新定義
     */
     public static void main(String[] args)
     {
      //String 對(duì)象的hashCode(),equals已經(jīng)被重新定義
      //結(jié)果重復(fù)的內(nèi)容對(duì)象被除去,并按按照hashCode()升序排序
      Collection<String> colStr = new HashSet<String>();
      colStr.add("ArrayList");
      colStr.add("LinkedList");
      colStr.add("HashSet");
      colStr.add("LinkedHashSet");
      colStr.add("LinkedSortedSet");
      colStr.add("ArrayList");
      CollectionTest ct = new CollectionTest();
      ct.display(colStr);
      //自定義類Employee.如果沒有重新定義hashCode(),equals()方法,則不會(huì)除去重復(fù)內(nèi)容的對(duì)象,不會(huì)自動(dòng)按hashCode()排序
      Collection<Employee> colEmp = new HashSet<Employee>();
      colEmp.add(new Employee(1,"no.1","semovy","he is a hero."));
      colEmp.add(new Employee(2,"no.2","superman_wshm","from Shenzhen China"));
      colEmp.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      colEmp.add(new Employee(4,"no.4","joke","note1"));
      colEmp.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      ct.display(colEmp);
      //LinkedHashSet,既去除了內(nèi)容重復(fù)的對(duì)象,又按時(shí)插入容器時(shí)的順序,被迭代.
      Collection<Employee> linkedEmp = new LinkedHashSet<Employee>();
      linkedEmp.add(new Employee(1,"no.1","semovy","he is a hero."));
      linkedEmp.add(new Employee(2,"no.2","superman_wshm","from Shenzhen China"));
      linkedEmp.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      linkedEmp.add(new Employee(4,"no.4","joke","note1"));
      linkedEmp.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      ct.display(linkedEmp);
      //SortedSet接口,可以去除重復(fù),并有比較器.
      SortedSet<String> ss = new TreeSet<String>();
      ss.add("1");
      ss.add("2");
      ss.add("3");
      ss.add("4");
      ss.add("4");
      ct.display(ss);
      
      //  SortedSet接口,可以去除重復(fù),并有比較器.
      SortedSet<Employee> treeEmp = new TreeSet<Employee>(
        new Comparator<Employee>()//使用Employee泛型,匿名內(nèi)部類比較器
        {
         
         public int compare(Employee arg0, Employee arg1) {
          
          return arg1.getName().compareTo(arg0.getName());//按照名稱比較降序排序
         }
         
        }
        );
      treeEmp.add(new Employee(1,"no.1","semovy","he is a hero."));
      treeEmp.add(new Employee(2,"no.2","superman_wshm","from Shenzhen China"));
      treeEmp.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      treeEmp.add(new Employee(4,"no.4","joke","note1"));
      treeEmp.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      ct.display(treeEmp);
      
      //SortedSet接口,可以去除重復(fù),并有比較器.比較器名為comparatorById
      ComparatorById comparatorById = new ComparatorById();
      SortedSet<Employee> treeEmp1 = new TreeSet<Employee>(comparatorById);
      treeEmp1.add(new Employee(1,"no.1","semovy","he is a hero."));
      treeEmp1.add(new Employee(2,"no.2","superman_wshm","from Shenzhen China"));
      treeEmp1.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      treeEmp1.add(new Employee(4,"no.4","joke","note1"));
      treeEmp1.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      ct.display(treeEmp1);
      
      System.out.println();
      System.out.println(treeEmp1.last().toString());
      System.out.println(treeEmp1.first().toString());
      
      //用List接口的實(shí)現(xiàn)
      //ArrayList.基于數(shù)組的實(shí)現(xiàn),添加與刪除的效率慢于LinkedList,
      //LinkedList基于雙向鏈表的實(shí)現(xiàn) ,添加與刪除的效率快于ArrayList,但迭代遍歷的效率不如ArrayList
      List<Employee> empList = new ArrayList<Employee>();
      empList.add(new Employee(1,"no.1","semovy","he is a hero."));
      empList.add(new Employee(2,"no.2","superman_wshm","from Shenzhen China"));
      empList.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      empList.add(new Employee(4,"no.4","joke","note1"));
      empList.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      ct.display(empList);
      
      Employee[] arrEmp = empList.toArray(new Employee[0]);
      Arrays.sort(arrEmp, comparatorById);//用Arrays.sort靜態(tài)方法排序,比較器是comparatorById
      
      ct.display(arrEmp);
      
      LinkedList<Employee> linkedListEmp = new LinkedList<Employee>();
      linkedListEmp.add(new Employee(1,"no.1","semovy","he is a hero."));
      linkedListEmp.add(new Employee(2,"no.2","superman_wshm","from Shenzhen China"));
      linkedListEmp.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      linkedListEmp.add(new Employee(4,"no.4","joke","note1"));
      linkedListEmp.add(new Employee(3,"no.3","韋善茂","來自中國(guó)"));
      ct.display(linkedListEmp);
      
      ListIterator<Employee> ll =  linkedListEmp.listIterator();
      while(ll.hasNext())
      {
       Employee em = ll.next();
       System.out.println("index:" + ll.nextIndex());
       if(em.getId() == 3)
        ll.remove();//刪除剛跨過的元素
      }
      ct.display(linkedListEmp);
     }

     /**
      * display all the objects in Collection
      * @prama Conllection
      */
     public void display(Collection c)//用for循環(huán)集合
     {
      System.out.println();
      for(Object obj : c)
       System.out.println(obj.toString() + " ");
     }
     public void display(Object[] arr)//用for循環(huán)數(shù)組
     {
      System.out.println();
      for(Object obj : arr)
       System.out.println(obj.toString() + " ");
     }
    }
    /**
     * 比較器接口Comparator 按id.升序
     */
     class ComparatorById implements Comparator<Employee>
    {
     public int compare(Employee e1 ,Employee e2)
     {
      return e1.getId() - e2.getId();//按照id比較升序排序
     }
    }







    //==============================================================================
    結(jié)果:


    ArrayList
    HashSet
    LinkedSortedSet
    LinkedHashSet
    LinkedList

    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國(guó) ]
    [ ID: 2 , No.: no.2 , Name: superman_wshm , Note: from Shenzhen China ]
    [ ID: 1 , No.: no.1 , Name: semovy , Note: he is a hero. ]
    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]

    [ ID: 1 , No.: no.1 , Name: semovy , Note: he is a hero. ]
    [ ID: 2 , No.: no.2 , Name: superman_wshm , Note: from Shenzhen China ]
    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國(guó) ]
    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]

    1
    2
    3
    4

    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國(guó) ]
    [ ID: 2 , No.: no.2 , Name: superman_wshm , Note: from Shenzhen China ]
    [ ID: 1 , No.: no.1 , Name: semovy , Note: he is a hero. ]
    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]

    [ ID: 1 , No.: no.1 , Name: semovy , Note: he is a hero. ]
    [ ID: 2 , No.: no.2 , Name: superman_wshm , Note: from Shenzhen China ]
    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國(guó) ]
    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]

    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]
    [ ID: 1 , No.: no.1 , Name: semovy , Note: he is a hero. ]

    [ ID: 1 , No.: no.1 , Name: semovy , Note: he is a hero. ]
    [ ID: 2 , No.: no.2 , Name: superman_wshm , Note: from Shenzhen China ]
    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國(guó) ]
    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]
    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國(guó) ]

    [ ID: 1 , No.: no.1 , Name: semovy , Note: he is a hero. ]
    [ ID: 2 , No.: no.2 , Name: superman_wshm , Note: from Shenzhen China ]
    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國(guó) ]
    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國(guó) ]
    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]

    [ ID: 1 , No.: no.1 , Name: semovy , Note: he is a hero. ]
    [ ID: 2 , No.: no.2 , Name: superman_wshm , Note: from Shenzhen China ]
    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國(guó) ]
    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]
    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國(guó) ]
    index:1
    index:2
    index:3
    index:3
    index:4

    [ ID: 1 , No.: no.1 , Name: semovy , Note: he is a hero. ]
    [ ID: 2 , No.: no.2 , Name: superman_wshm , Note: from Shenzhen China ]
    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]



    主站蜘蛛池模板: 亚洲欧洲国产综合AV无码久久| 怡红院亚洲红怡院在线观看| 免费一级做a爰片性色毛片| 99精品视频免费观看| 一级黄色片免费观看| 亚洲色偷精品一区二区三区| 99久久精品国产亚洲| 国产V亚洲V天堂无码久久久| 国产成人免费手机在线观看视频| 免费视频专区一国产盗摄| 国产一区二区三区免费| 国产免费人成视频尤勿视频 | 9久热精品免费观看视频| 亚洲aⅴ无码专区在线观看春色| 亚洲欧洲久久精品| 久久久久亚洲AV片无码下载蜜桃| 亚洲精品V欧洲精品V日韩精品| 亚洲免费无码在线| 一本色道久久88综合亚洲精品高清| 成人免费视频软件网站| 中字幕视频在线永久在线观看免费| 777爽死你无码免费看一二区| 免费黄网站在线看| 精品一区二区三区免费| 国产麻豆成人传媒免费观看| 国产猛男猛女超爽免费视频| 久久国产精品免费观看| 暖暖免费在线中文日本| 男人都懂www深夜免费网站| 国产免费无码一区二区| 99在线热播精品免费99热| 色片在线免费观看| 91高清免费国产自产| 免费黄色网址网站| 免费精品国产自产拍在线观看图片| 中文字幕乱码免费视频| a级毛片无码免费真人| 日本v片免费一区二区三区| 国产一区二区三区免费视频| 亚洲AV永久无码精品一区二区国产| 亚洲色婷婷综合开心网|