从2D列表中删除某些行

时间:2018-07-30 19:22:44

标签: java list arraylist multidimensional-array

我正在尝试了解从2D数组列表中删除/操作某些行的最佳方法。以下是示例列表:

 [ [Facebook, Bob, Mark , Yes],
    [Facebook, Bob, Priscilla, Yes],
    [Tesla, Bill, Elon, Yes],
    [Tesla, Bill, Maye, Yes],
    [Apple, Jim, Tim, Yes] ]

基本上,我不希望重复,因为我只需要处理list.get(0)和list.get(1),所以我想要的结果列表只给我类似的东西:

[[Facebook, Bob],[Tesla,Bill],[Apple, Jim]]

仅列出了2D ArrayList子级中的前两个唯一元素。

2 个答案:

答案 0 :(得分:2)

我将流式传输列表,从每个列表中获取前两个值,获取唯一的结果并收集它们:

List<List<String>> data = /* data */ ;

List<List<String> result =
    data.stream()
        .map(l -> l.subList(0, 2))
        .distinct()
        .collect(Collectors.toList());

答案 1 :(得分:1)

如果我正确阅读了您的问题(基于另一个的certian列创建一个数组),您可以做的是编写一个脚本,该脚本循环遍历每个数组并将该点的项目添加到另一个数组中。例如

ArrayList<ArrayList<{ITEM CLASS}>> cpy = new ArrayList<ArrayList<{ITEM CLASS>>();
for(int i = 0; i < List.Length; i++)
{
   cpy.Add(new ArrayList<{ITEM CLASS}>);
   for(int j = 0; j < List.get(0).Length; j++)
     {
         if(j == CopyIndex)
         {
             cpy.get(i).Add(List.get(i).get(j));
         }
     }

}

或者类似的东西^(我没有进行过错误测试,所以有可能它可能不起作用,但这就是一般概念)