<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    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容器中的對象是唯一的,所以加入Set容器的對象,必須重新equals()方法.作為唯一性的標識
     * HashSet的排序規則是利用HashTable,所以HashSet容器的對象必須重新定義hashCode()方法
     * 利用hashCode()方法,可以讓快速找到容器中的對象,在比較兩加入到容器中的對象是否相同時,會比較
     * hashCode()方法返回是否相同,如果相同,則再利用equals()方法比較,如果兩者都相同,則被看作相同的對象
     * String 對象的hashCode(),equals已經被重新定義
     */
     public static void main(String[] args)
     {
      //String 對象的hashCode(),equals已經被重新定義
      //結果重復的內容對象被除去,并按按照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()方法,則不會除去重復內容的對象,不會自動按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","韋善茂","來自中國"));
      colEmp.add(new Employee(4,"no.4","joke","note1"));
      colEmp.add(new Employee(3,"no.3","韋善茂","來自中國"));
      ct.display(colEmp);
      //LinkedHashSet,既去除了內容重復的對象,又按時插入容器時的順序,被迭代.
      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","韋善茂","來自中國"));
      linkedEmp.add(new Employee(4,"no.4","joke","note1"));
      linkedEmp.add(new Employee(3,"no.3","韋善茂","來自中國"));
      ct.display(linkedEmp);
      //SortedSet接口,可以去除重復,并有比較器.
      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接口,可以去除重復,并有比較器.
      SortedSet<Employee> treeEmp = new TreeSet<Employee>(
        new Comparator<Employee>()//使用Employee泛型,匿名內部類比較器
        {
         
         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","韋善茂","來自中國"));
      treeEmp.add(new Employee(4,"no.4","joke","note1"));
      treeEmp.add(new Employee(3,"no.3","韋善茂","來自中國"));
      ct.display(treeEmp);
      
      //SortedSet接口,可以去除重復,并有比較器.比較器名為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","韋善茂","來自中國"));
      treeEmp1.add(new Employee(4,"no.4","joke","note1"));
      treeEmp1.add(new Employee(3,"no.3","韋善茂","來自中國"));
      ct.display(treeEmp1);
      
      System.out.println();
      System.out.println(treeEmp1.last().toString());
      System.out.println(treeEmp1.first().toString());
      
      //用List接口的實現
      //ArrayList.基于數組的實現,添加與刪除的效率慢于LinkedList,
      //LinkedList基于雙向鏈表的實現 ,添加與刪除的效率快于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","韋善茂","來自中國"));
      empList.add(new Employee(4,"no.4","joke","note1"));
      empList.add(new Employee(3,"no.3","韋善茂","來自中國"));
      ct.display(empList);
      
      Employee[] arrEmp = empList.toArray(new Employee[0]);
      Arrays.sort(arrEmp, comparatorById);//用Arrays.sort靜態方法排序,比較器是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","韋善茂","來自中國"));
      linkedListEmp.add(new Employee(4,"no.4","joke","note1"));
      linkedListEmp.add(new Employee(3,"no.3","韋善茂","來自中國"));
      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循環集合
     {
      System.out.println();
      for(Object obj : c)
       System.out.println(obj.toString() + " ");
     }
     public void display(Object[] arr)//用for循環數組
     {
      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比較升序排序
     }
    }







    //==============================================================================
    結果:


    ArrayList
    HashSet
    LinkedSortedSet
    LinkedHashSet
    LinkedList

    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國 ]
    [ 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: 來自中國 ]
    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]

    1
    2
    3
    4

    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國 ]
    [ 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: 來自中國 ]
    [ 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: 來自中國 ]
    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]
    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國 ]

    [ 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: 來自中國 ]
    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國 ]
    [ 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: 來自中國 ]
    [ ID: 4 , No.: no.4 , Name: joke , Note: note1 ]
    [ ID: 3 , No.: no.3 , Name: 韋善茂 , Note: 來自中國 ]
    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 ]



    主站蜘蛛池模板: 一个人晚上在线观看的免费视频 | 亚洲无圣光一区二区| 国产精品高清免费网站| 四虎成人精品在永久免费| 在线精品自拍亚洲第一区| 国产精品四虎在线观看免费| 国产精品亚洲а∨无码播放麻豆| 免费a在线观看播放| 国产日韩在线视频免费播放| 亚洲一区二区三区AV无码| 精品在线免费观看| 亚洲一区二区三区日本久久九 | 免费人成网站在线观看10分钟| 亚洲欧洲另类春色校园小说| 曰批视频免费30分钟成人| 亚洲精品无码av中文字幕| 亚洲Av无码乱码在线播放| 本免费AV无码专区一区| 亚洲国产成人久久精品影视 | 极品美女一级毛片免费| 亚洲男人第一无码aⅴ网站| 精品四虎免费观看国产高清午夜| 亚洲视频一区二区三区| 午夜免费福利网站| 国产精品亚洲а∨无码播放不卡| 久久亚洲国产精品五月天婷| 亚洲精品免费视频| 亚洲精品人成网线在线播放va| 亚洲精品A在线观看| 无码精品一区二区三区免费视频 | 香蕉视频亚洲一级| 亚洲国产成人片在线观看无码| 成人浮力影院免费看| 免费高清A级毛片在线播放| 亚洲AV日韩AV永久无码绿巨人| 在线免费视频一区| 男人进去女人爽免费视频国产| 亚洲AV无码一区二区三区在线| 亚洲高清免费视频| 久久精品免费一区二区| 一级做a爱片特黄在线观看免费看|