Java算法:如何对实体进行分组
有实体列表:A、B、C、D。 每个实体都有自己的其他实体列表,LAT表示:
- A(1,2,3)
- B(4、5、6)
- C(1,2)
- D(8、9)
我需要通过第二级实体元素的交集对第一级实体进行分组。最后,我应该得到如下结果:
List<Set<Entity1>>:
- A(1, 2, 3), C(1, 2)
- B(4, 5, 6)
- D(8, 9)
如何在java7中编写它
你可以在下面搜索框中键入要查询的问题!
有实体列表:A、B、C、D。 每个实体都有自己的其他实体列表,LAT表示:
我需要通过第二级实体元素的交集对第一级实体进行分组。最后,我应该得到如下结果:
List<Set<Entity1>>:
- A(1, 2, 3), C(1, 2)
- B(4, 5, 6)
- D(8, 9)
如何在java7中编写它
# 1 楼答案
一种选择是使用某种列表,并对它们进行比较。 另一种选择是使用实矩阵,假设行是实体,列是数字。如果实体和数字的组合为真,则使用X或1。然后遍历获得匹配项的列(所有列都有多个元素)
为了简单起见,请参见清单(虽然性能不高,但可以完成这项工作):
# 2 楼答案
不是一个真正的答案,但太简短,无法评论
我不确定是否有需求,但这可能吗
结果将是
不是最优算法(伪代码)
这不是最优的,但可能是一个良好的开端
以上示例的详细描述
[ {A}(1, 2), {B}(2, 3), {C}(3, 4) ]
[ {A, B}(1, 2, 3), {C}(3, 4) ]
[ {A, B, C}(1, 2, 3, 4) ]
为了简化您的实现,您可以为group创建一个相关实体的列表
例如,对于新输入-
[ {A}(1, 2), {B}(3, 4), {C}(1 ,3) ]
,我在伪代码中添加了行号[ {A, C}(1, 2, 3), {B}(3, 4) ]