2013-10-29 43 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

相关问题