-2

我有一个班级标题:

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

我需要编写一个方法,将具有相同描述的所有标题组合在一起,并返回一个地图,其中包含与地图中的值具有相同描述的标题列表。

[部分原始问题如下。我不清楚(andybalaam)地图的键中需要什么。]

我需要创建一个遍历标题列表的方法,以确定是否存在具有相同描述的标题对象。此时,我想将具有相同描述的所有标题对象复制到另一个列表中,并将此列表放入 HashMap < Integer , List < Heading > > 该方法应返回此 HashMap,其中包含每个键,具有相同描述的标题对象列表。

4

1 回答 1

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
于 2013-10-29T17:14:56.873 回答