2010-09-24 34 views
15

Hầu hết các lần liệt kê có chứa tất cả các phần tử được hiển thị trong trình đơn thả xuống trong giao diện người dùng. Chúng tôi chỉ cần hiển thị 2 trong số 5 trường trong giao diện người dùng. Điều gì sẽ là một cách dễ dàng hơn để tìm nạp dữ liệu này, bằng cách nào đó tận dụng các chức năng tương tự có sẵn cho một điều tra.Cách lấy một tập hợp con của một liệt kê

enum Color {RED, GREEN, BLACK, BLUE, YELLOW}; 

Chúng tôi có yêu cầu chỉ hiển thị {RED, BLUE} trong giao diện người dùng nhất định?

Trả lời

25

Âm thanh như một công việc cho EnumSet:

EnumSet<Color> set = EnumSet.of(Color.RED, Color.BLUE); 
1

Nếu enum chứa một số phương pháp tùy chỉnh (ví dụ, để hiển thị Red instesd của RED)

public enum Color { 
    RED("Red"), GREEN("Green"), BLACK("Black"), BLUE("Blue"), YELLOW("Yellow"); 

    private final String display; 

    private Color(String display) { 
     this.display = display; 
    } 

    @Override 
    public String toString() { 
     return display; 
    } 

    public static EnumSet<Color> getSubSetOfValues() { 
     return EnumSet.of(RED, BLUE); // return Red and Green 
     //return EnumSet.range(GREEN, BLUE); // return Green, Black and Blue 
    } 
} 

Col or.values ​​(); // tất cả các phần tử.

Color.getSubSetOfValues ​​(); // tập hợp con

Các vấn đề liên quan