【枚舉】_類集對Enum的支援筆記

來源:互聯網
上載者:User

【枚舉】_類集對Enum的支援筆記

本章目標:
掌握EnumMap類的使用
掌握EnumSet類的使用

3、具體內容
3.1、EnumMap

定義格式:
public class EnumMap<K extends Enum<K>,V>
extends AbstractMap<K,V>
implements Serializable,Cloneable

範例:

import java.util.EnumMap;import java.util.Map;enum Color{    RED,GREEN,BLUE;}public class EnumMapDemo{    public static void main(String args[]){        Map<Color,String> desc = null;        desc = new EnumMap<Color,String>(Color.class);//執行個體化EnumMap對象        desc.put(Color.RED,"紅色");        desc.put(Color.GREEN,"綠色");        desc.put(Color.BLUE,"藍色");        System.out.println("=====輸出全部的內容=====");        for(Color c:Color.values()){            System.out.println(c.name()+"-->"+desc.get(c));                }        System.out.println("=====輸出全部的索引值=====");        for(Color c:desc.keySet()){            System.out.print(c.name()+"、");                }        System.out.println();        System.out.println("=====輸出全部的內容=====");        for(String s:desc.values()){            System.out.println(s+"、");                }    }}

3.2、EnumSet

EnumSet是Set介面的子類,所以裡面的內容是無法重複的,在使用EnumSet的時候是不能直接使用關鍵字new為其進行執行個體化的,所以在此類中提供了很多的靜態方法。

依次驗證EnumSet類的方法

範例:將全部的集合設定到EnumSet集合之中。

import java.util.EnumSet;enum Color{    RED,GREEN,BLUE;}public class EnumSetDemo01{    public static void main(String args[]){        EnumSet<Color> es = null;        System.out.println("====EnumSet.allOf(Color.class)=====");        es = EnumSet.allOf(Color.class);//將枚舉的全部類型設定到EnumSet對象之中        print(es);    }    public static void print(EnumSet<Color> temp){//專門的輸出操作        for(Color c:temp){            System.out.print(c+"、");        }        System.out.println();    }}

範例:只設定一個內容到集合

import java.util.EnumSet;enum Color{    RED,GREEN,BLUE;}public class EnumSetDemo02{    public static void main(String args[]){        EnumSet<Color> es = null;        System.out.println("====EnumSet.of(Color.BLUE)======");        es = EnumSet.of(Color.BLUE);//將枚舉的一個內容設定到EnumSet對象之中        print(es);    }    public static void print(EnumSet<Color> temp){//專門的輸出操作        for(Color c:temp){            System.out.print(c+"、");        }        System.out.println();    }}

建立只能放入指定枚舉類型的集合
可能同時有多個類型的枚舉對象,但是一個集合中只要求放入指定類型的枚舉。

import java.util.EnumSet;enum Color{    RED,GREEN,BLUE;}public class EnumSetDemo03{    public static void main(String args[]){        EnumSet<Color> es = null;    //聲明一個EnumSet對象        System.out.println("=====EnumSet.noneOf(Color.class)======");        es = EnumSet.noneOf(Color.class);//將枚舉的全部類型設定到EnumSet對象之中        es.add(Color.RED);    //增加內容        es.add(Color.GREEN);    //增加內容        print(es);            }    public static void print(EnumSet<Color> temp){        for(Color c:temp){            System.out.print(c+"、");        }        System.out.println();    }}

還可以建立不包含制定元素的集合。

import java.util.EnumSet;enum Color{    RED,GREEN,BLUE;}public class EnumSetDemo04{    public static void main(String args[]){        EnumSet<Color> esOld = null;        EnumSet<Color> esNew = null;        System.out.println("====EnumSet.complementOf(Color.class)====");        esOld = EnumSet.noneOf(Color.class);        esOld.add(Color.RED);        esOld.add(Color.GREEN);        esNew = EnumSet.complementOf(esOld);    //不包括指定內容        print(esNew);    }    public static void print(EnumSet<Color> temp){        for(Color c:temp){        // 迴圈輸出EnumSet中的內容            System.out.print(c+"、");        }        System.out.println();            }}

還可以拷貝一個集合的內容

import java.util.EnumSet;enum Color{    RED,GREEN,BLUE;}public class EnumSetDemo05{    public static void main(String args[]){        EnumSet<Color> esOld = null;        EnumSet<Color> esNew = null;        System.out.println("====EnumSet.copyOf(Color.class)====");        esOld = EnumSet.noneOf(Color.class);        esOld.add(Color.RED);        esOld.add(Color.GREEN);        esNew = EnumSet.copyOf(esOld);    //從已有的集合拷貝過來        print(esNew);    }    public static void print(EnumSet<Color> temp){        for(Color c:temp){            System.out.print(c+"、");                }        System.out.println();    }}

總結:
1、EnumMap和EnumSet,EnumMap是符合Map的操作形式的,而EnumSet基本上就是使用靜態方法完成。
2、在操作中大量的使用了枚舉.class,這個屬於Java反射機制。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.