从单个列表创建多个列表的算法

时间:2012-02-01 15:14:58

标签: java list

我有一个界面:

List<List<Integer>> separate(List<Integer> list);

我希望能够根据列表对象中的值是否相同将参数化列表分成单独的整数列表,因此如果列表为{1, 1, 5, 7, 9},它将创建4个单独的列表:

  • {1, 1}
  • {5}
  • {7}
  • {9}

是否有一个简单的库可供使用?我可以很容易地提出一个算法,但是如果列表中的元素不是Integers而是Objects,并且你想将分组规则建立在其中的某些字段上,那么我该如何去关于这样做?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

通常,您需要使用临时Map<Key, List<Type>>,其中类型在您的示例中均为Integer。对于大列表中的每个Integer,请检查Map以查看Integer是否已成为密钥。如果没有,请使用新的List<Integer>添加。然后,无论哪种方式,请将Integer添加到该密钥的List。然后在最后,从List<Integer>的{​​{1}}构建values()

对于更复杂的类型,您可以选择一些可区分的数据值作为 Key ,但其他代码也是类似的。