2015-07-22 48 views
1

我有一個ArrayList中,我對每個記錄下詳細信息,如獨特的類別的名稱:NameCategory我怎麼

其中,名稱是食品項目名稱和類別是食品項目類別

所以在ArrayList中我有multiple food items for相同Category`,如:

Item Name : Samosa 
Item Category : Appetizer 

Item Name : Cold Drink 
Item Category : Drinks 

Item Name : Fruit Juice 
Item Category : Drinks 

現在我只是想獲得獨特的類別名稱僅

這裏是我的代碼:

Checkout checkOut = new Checkout(); 
checkOut.setName(strName); 
checkOut.setCategory(strCategory); 

checkOutArrayList.add(checkOut); 
+0

你的問題是什麼? – Karakuri

+0

問題標題與您在代碼中嘗試做的不同。我很困惑...:/ – DroidDev

+0

我如何獲得獨特類別的名稱? – Oreo

回答

5

你可以收集類別爲Set。在這種情況下使用s TreeSet有很好的收穫,因爲它也會按字母順序對類別進行排序,這可能適合需要顯示它們的GUI。

Set<String> uniqueCategories = new TreeSet<>(); 

// Accumulate the unique categories 
// Note that Set.add will do nothing if the item is already contained in the Set. 
for(Checkout c : checkOutArrayList) { 
    uniqueCategories.add(c.getCategory()); 
} 

// Print them all out (just an example) 
for (String category : uniqueCategories) { 
    System.out.println(category); 
} 

編輯:
如果您使用的是Java 8中,您可以使用流語法:

Set<String> uniqueCategories = 
    checkOutArrayList.stream() 
        .map(Checkout::getCategory) 
        .collect(Collectors.toSet()); 

或者,如果你想收集成一個TreeSet和得到的結果進行排序關閉蝙蝠:

Set<String> uniqueCategories = 
    checkOutArrayList.stream() 
        .map(Checkout::getCategory) 
        .collect(Collectors.toCollection(TreeSet::new)); 
+0

非常感謝你,如果我想知道一些獨特的類別,例如:2 – Oreo

+1

@Oreo Set仍然是一個集合 - 只需調用它的size()方法即可。 – Mureinik

+0

最後一個問題,我做了獨特的分類全球但無法使用字符串類作爲全球性在我的課,得到:類無法解析到類型 – Oreo