如何使用集合在Java中按对象分组?

问题描述 投票:3回答:3

我对Java还是很陌生,我试图根据数字对对象进行分组,但是我无法做到这一点。这是示例:

SomeCollection<Integer,String> t=new SomeCollection<Integer,String>();
t.put("1","a");
t.put("1","b");
t.put("2","c");

output:
1 - a,b
2 - c

基本上,当数字相同时,则需要将值分组在同一数字下。这就是询问如何通过使用任何集合来执行这种战略性输出来实现的。任何帮助表示赞赏。

java object collections output grouping
3个回答
3
投票

正如其他人所建议的,如果您只想坚持JDK集合,则可以使用Map<Integer, List<Object>>


0
投票

甚至还有一种结构都可以帮助您做到这一点。


0
投票
    Map<String, Integer> map = new HashMap<>();
    map.put("a", 1);
    map.put("b", 1);
    map.put("c", 2);
    map.put("d", 1);
    map.put("e", 3);
    map.put("f", 3);
    map.put("g", 3);

    //Using Java 7
    Set<Integer> set = new HashSet<Integer>();
    Map<Integer, List<String>> finalList = new HashMap<Integer, List<String>>();
    for (Map.Entry<String, Integer> entry : map.entrySet()) {
        set.add(entry.getValue());
        finalList.put(entry.getValue(), new ArrayList<String>());
    }
    for (Map.Entry<String, Integer> entry : map.entrySet()) {
        for (Integer value : set) {
            if (value.equals(entry.getValue())) {
                List<String> values = finalList.get(value);
                values.add(entry.getKey());
            }
        }
    }
    System.out.println("Result : " + finalList.toString());
© www.soinside.com 2019 - 2024. All rights reserved.