2013-10-29 65 views
-3

我有一個類標題:Java列表找到等於項目

public class Heading { 
    // Some other members, methods etc. 
    private String description; 
    public String getDescription() { 
     return description; 
    } 
} 

我需要寫一個方法組一起相同的說明所有的標題,並返回其具有標題的列表具有同樣描述的地圖地圖中的值。

[部分原始問題如下。這不是很清楚,我(andybalaam)什麼是需要在地圖的鑰匙。]

我需要創建一個方法是通過標題列表迭代,以找出是否有 與標題對象相同的描述。在這一點上,我想所有的 標題對象以相同的描述到另一個目錄拷貝,並把 名單爲 的HashMap <整數,列表<標題>> 的方法應該返回此HashMap包含,換每個鍵,標題清單 具有相同描述的對象。

+0

請了解如何輸入代碼。 http://stackoverflow.com/editing-help#code – SLaks

+0

只是一個提示,看一下'Comparable'接口,如果你想使用'Map中的某些內置功能,就需要使用它's和'List's。 – Shaded

+0

感謝提示 – dante

回答

0

該函數返回描述 - >標題列表的映射。您不能擁有標題大小 - >標題列表的地圖,因爲您可能有多個具有相同長度的列表,並且只能使用給定鍵的一個映射條目。

public static Map<String, List<Heading>> sameDescs(List<Heading> input) 
{ 
    Map<String, List<Heading>> ret = new HashMap<String, List<Heading>>(); 

    for(Heading heading : input) 
    { 
     if(! ret.containsKey(heading.getDescription())) 
     { 
      ret.put(heading.getDescription(), new ArrayList<Heading>()); 
     } 
     ret.get(heading.getDescription()).add(heading); 
    } 

    return ret; 
} 

您可以打印喜歡這個列表的大小:

public static void main(String[] args) { 
    List<Heading> myList = new ArrayList<Heading>(); 
    myList.add(new Heading("desc1")); 
    myList.add(new Heading("desc2")); 
    myList.add(new Heading("desc1")); 

    Map<String, List<Heading>> result = sameDescs(myList); 

    for(Map.Entry<String, List<Heading>> e : result.entrySet()) { 
     System.out.println(e.getKey() + ":" + e.getValue().size()); 
    } 
} 

將會產生的輸出是這樣的:

desc1:2 
desc2:1 
+0

非常感謝!正是我所尋找的...... – dante

相關問題