集合クラスの整理


集合クラス関係図は次のとおりです.
一、SET:
① EnumSet
package set;

import java.util.EnumSet;
import java.util.HashSet;
import java.util.Set;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 12:05
 */
public class EnumSetTest {

    /**
     * EnumSet       set    ,             
     *     hashset          ,   EnumSet         
     * EnumSet      ,   AbstractSet,AbstractSet  Set  
     */
    public static void main(String[] args) {
        System.out.println("EnumSet.noneOf");
        Set set=EnumSet.noneOf(Student.class);
        set.add(Student.HARRY);
        set.add(Student.ROBBIE);
        set.add(Student.ROBIN);
        for(Student p:set){
            System.out.println(p);
        }
        set.clear();
        System.out.println();


        System.out.println("EnumSet.allOf");
        set=EnumSet.allOf(Student.class);
        for(Student p:set){
            System.out.println(p);
        }
        set.clear();
        System.out.println();

        System.out.println("EnumSet.Of one");
        set=EnumSet.of(Student.ROBIN);
        for(Student p:set){
            System.out.println(p);
        }
        System.out.println();

        System.out.println("EnumSet.Of two");
        set=EnumSet.of(Student.ROBIN,Student.HARRY);
        for(Student p:set){
            System.out.println(p);
        }
        System.out.println();

        System.out.println("hashset:");
        Set set2 = new HashSet();
        set2.add(Student.HARRY);
        set2.add(Student.ROBBIE);
        set2.add(Student.ROBIN);
        for (Student student : set2){
            System.out.println(student);
        }
    }
}


enum   Student
{
    ROBIN("robin"),
    HARRY("harry",40),
    ROBBIE("robbie");
    String name;
    int age;
    private Student(String name)
    {
        this(name,0);
    }
    private Student(String name,int age)
    {
        this.name=name;
        this.age=age;
    }
    public String toString()
    {
        return name;
    }
}

印刷結果:
EnumSet.noneOf
robin
harry
robbie

EnumSet.allOf
robin
harry
robbie

EnumSet.Of one
robin

EnumSet.Of two
robin
harry

hashset:
robbie
robin
harry

② LinkedHashSet
package set;

import java.util.LinkedHashSet;
import java.util.Set;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 14:35
 */
public class LinkedHashSetTest {

    /**
     * LinkedHashSet    set,     ,            。
     *           ,  add   
     */
    public static void main(String[] args) {
        Set set = new LinkedHashSet();
        set.add(1);
        set.add(5);
        set.add(2);
        set.add(1);

        for(Integer i : set){
            System.out.println(i);
        }
    }
}

印刷結果:
1
5
2

③ TreeSet
package set;

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 12:27
 */
public class TreeSetTest {


    /**
     * TreeSet  ,  NavigableSet,NavigableSet  SortedSet  ,SortedSet  Set  
     *       ,         ,    Comparator compare  
     *        Map
     */
    public static void main(String[] args) {
        Set set = new TreeSet(new Comparator() {
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        set.add(2);
        set.add(1);
        set.add(3);

        for(Integer i : set){
            System.out.println(i);
        }
    }
}

印刷結果:
3
2
1

二、List
① LinkedList
package list;

import java.util.LinkedList;
import java.util.List;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 15:22
 */
public class LinkedListTest {


    /**
     * LinkedList ArrayList   
     * LinkedList        ,ArrayList       (       ,       )   。
     *       ,ArrayList          LinkedList  。
     *     ,LinkedList  ArrayList  ,  ArrayList   ,           ,             ,LinkedList              ,        
     */
    public static void main(String[] args) {
        List list = new LinkedList();
        list.add(1);
        list.add(2);

        for(Integer i : list){
            System.out.println(i);
        }
    }
}

印刷結果:
1
2

② vector
package list;

import java.util.List;
import java.util.Vector;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 15:41
 */
public class VectorTest {

    /**
     * Vector    List  ,  ArrayList    ,       。
     *        
     *
     */
    public static void main(String[] args) {
        List list = new Vector();
        list.add(1);
        list.add(2);

        for(Integer i : list){
            System.out.println(i);
        }
    }
}

印刷結果:
1
2

三、queue
① ProrityQueue
package queue;

import java.util.Comparator;
import java.util.PriorityQueue;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 17:28
 */
public class ProrityQueueTest {

    public static void main(String[] args) {
        PriorityQueue priorityQueue = new PriorityQueue(2,new Comparator() {
            public int compare(Boss o1, Boss o2) {
                return o2.getAge() - o1.getAge();
            }
        });

        priorityQueue.add(new Boss("zhouhui",28));
        priorityQueue.add(new Boss("zhangjingjing",26));

        for(Boss boss : priorityQueue){
            System.out.println(boss.toString());
        }

    }
}


class Boss{
    private String name;
    private Integer age;

    public Boss(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Boss{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

印刷結果:
Boss{name='zhouhui', age=28}
Boss{name='zhangjingjing', age=26}

四map
① EnumMap
package map;

import java.util.EnumMap;
import java.util.Map;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 15:46
 */
public class EnumMapTest {


    /**
     * EnumMap key       
     */
    public static void main(String[] args) {
        Map map = new EnumMap(Student.class);
        map.put(Student.HARRY,Student.HARRY.toString());
        map.put(Student.ROBBIE,Student.ROBBIE.toString());
        map.put(Student.ROBIN,Student.ROBIN.toString());

        for(Map.Entry entry : map.entrySet()){
            System.out.println(entry.getKey().name + ":" + entry.getValue());
        }
    }
}

enum   Student
{
    ROBIN("robin"),
    HARRY("harry",40),
    ROBBIE("robbie");
    String name;
    int age;
    private Student(String name)
    {
        this(name,0);
    }
    private Student(String name,int age)
    {
        this.name=name;
        this.age=age;
    }
    public String toString()
    {
        return name;
    }
}

印刷結果:
robin:robin
harry:harry
robbie:robbie

② hashtable
package map;

import java.util.Collections;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 16:14
 */
public class HashTableTest {

    /**
     * hashtable hashmap   :
     * 1,hashtable      ,hashmap  
     * 2,hashmap   key value  null   ,hashtable  
     * 3,hashmap    Collections.synchronizedMap(map)       
     */
    public static void main(String[] args) {
        Hashtable hashtable = new Hashtable();
        for (int i = 0; i  entry : hashtable.entrySet()){
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }


        Map map = new HashMap();
        map.put(1,12);

        map = Collections.synchronizedMap(map);

    }
}

印刷結果:
9:9
8:8
7:7
6:6
5:5
4:4
3:3
2:2
1:1
0:0

③ IdentityHashMap
package map;

import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.Map;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 15:57
 */
public class IdentityHashMapTest {


    /**
     * IdentityHashMap  key        ==,    HashMap       toString
     *   "1"  String.valueOf("1"), new String("1")     ,IdentityHashMap    , HashMap   。
     */
    public static void main(String[] args) {
        Map map = new IdentityHashMap();

        map.put("1","2");
        map.put(new String("1"),"2");

        for(Map.Entry entry : map.entrySet()){
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }

        System.out.println("---------------------");

        map = new HashMap();
        map.put(String.valueOf("1"),"2");
        map.put(new String("1"),"2");

        for(Map.Entry entry : map.entrySet()){
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }



    }
}

印刷結果:
1:2
1:2
---------------------
1:2

④ LinkedHashMap
package map;

import java.util.Map;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 16:09
 */
public class LinkedHashMapTest {


    /**
     *    map  。
     */
    public static void main(String[] args) {
        Map map = new java.util.LinkedHashMap();

        map.put(1,3);
        map.put(2,3);
        map.put(3,3);

        for(Map.Entry entry : map.entrySet()){
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }
}

印刷結果:
1:3
2:3
3:3

⑤ properties
package map;

import java.util.Map;
import java.util.Properties;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 16:26
 */
public class PropertiesTest {

    /**
     * properties   hashtable, key value  string ,      put(Object,Object)   ,      toString  String,String。
     *
     * properties     load  ,getProperty(String key)     
     */
    public static void main(String[] args) {
        Properties properties = new Properties();
        properties.put(new Boss("zhou",1),new Boss("zhang",12));

        for(Map.Entry entry : properties.entrySet()){
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }
}


class Boss{
    private String name;
    private Integer age;

    public Boss(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Boss{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }
}

印刷結果
Boss{name='zhou', age=1}:Boss{name='zhang', age=12}

⑥ TreeMap
package map;

import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 16:53
 */
public class TreeMapTest {

    /**
     * TreeMap   key   map
     */
    public static void main(String[] args) {
        Map map = new TreeMap(new Comparator() {
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        });
        map.put(1,2);
        map.put(2,3);
        map.put(3,1);

        for(Map.Entry entry : map.entrySet()){
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }

    }
}

印刷結果:
3:1
2:3
1:2

⑦ WeakHashMap
package map;

import java.util.Map;
import java.util.WeakHashMap;

/*
 * DESCRIPTION : 
 * USER : zhouhui
 * DATE : 2017/8/18 17:03
 */
public class WeakHashMapTest {


    /**
     * weakhashmap hashmap    :
     * weakhashmap key        ,       。
     */
    public static void main(String[] args) {
        String a = new String("1");

        Map map = new WeakHashMap();
        map.put(a,"2");

        for(Map.Entry entry : map.entrySet()){
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }

        System.out.println("--------------------------------------");
        a = null;
        System.gc();

        for(Map.Entry entry : map.entrySet()){
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }

}

印刷結果
1:2
--------------------------------------