我有一个班级标题:
public class Heading {
// Some other members, methods etc.
private String description;
public String getDescription() {
return description;
}
}
我需要编写一个方法,将具有相同描述的所有标题组合在一起,并返回一个具有标题列表的地图,其描述与地图中的值相同。
[原始问题的一部分如下。我不清楚(andybalaam)在地图的键中需要什么。]
我需要创建一个迭代标题列表的方法,以查明是否存在 标题对象具有相同的描述。在这一点上,我想复制所有 将具有相同描述的标题对象放入另一个List并放入 这个List成了一个 HashMap<整数,列表<标题> > 该方法应返回此HashMap,其中包含每个键的标题列表 具有相同描述的对象。
答案 0 :(得分:0)
此函数返回描述地图 - >标题清单。你不能拥有list-size-list的地图 - >标题列表,因为您可能有多个具有相同长度的列表,并且您只能有一个具有给定键的映射条目。
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