【问题标题】:How to get first and second element of a each list in a nested list in java如何在java中的嵌套列表中获取每个列表的第一个和第二个元素
【发布时间】:2022-01-28 19:52:04
【问题描述】:

现在我在 java 中有一个 Arraylist。当我打电话时

myarraylist.get(0)
myarraylist.get(1)
myarraylist.get(2)

[0, 5, 10, 16]
[24, 29, 30, 35, 41, 45, 50]
[0, 6, 41, 45, 58]

都是不同的列表。我需要做的是获取每个列表的第一个和第二个元素,并将其放入一个列表中,如下所示:

[0,5]
[24,29]
[0,6]

我尝试了不同的 for 循环,似乎有一种简单的方法可以在 python 中执行此操作,但在 java 中没有。

【问题讨论】:

  • 快速参考:stackoverflow.com/questions/4439595/…简而言之:可以使用Array.copyOfRange(Object [], int from, int to)函数
  • @Raqha 源是一个列表,而不是一个数组。
  • Jsid,如果我对您的问题的回答令人满意,请单击复选标记选择我的答案。谢谢。

标签: java


【解决方案1】:

List<Integer> sublist = myarraylist.subList(0, 2);

对于List#subList(int fromIndex, int toIndex)toIndex 是专有的。因此,要获取前两个元素(索引 0 和 1),toIndex 的值必须为 2。

【讨论】:

  • 这是有道理的,但为什么是 0 到 2?不应该是0比1吗?由于第一个列表中 0,5 的索引是 0 和 1,而不是 0、1 和 2
  • @JsidXbend 因为 toIndex 值是 EXCLUSIVE,这意味着最后一个索引是之前的值(即对于 toIndex == 2 ,最后一个 INCLUDED 索引是 1)
【解决方案2】:

尝试阅读 Java 8 Stream API,特别是:

这应该可以帮助您实现所需。

【讨论】:

    【解决方案3】:
    1. 通过嵌套列表映射。
    2. 为每个嵌套列表创建一个子列表。
    3. 将流重新收集到新列表中。
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    class Scratch {
        public static void main(String[] args) {
           List<List<Integer>> myArrayList = new ArrayList<>();
           myArrayList.add(Arrays.asList(0, 5, 10, 16));
           myArrayList.add(Arrays.asList(24, 29, 30, 35, 41, 45, 50));
           myArrayList.add(Arrays.asList(0, 6, 41, 45, 58));
    
            System.out.println(myArrayList.stream().map(l -> l.subList(0, 2)).collect(Collectors.toList()));
            // [[0, 5], [24, 29], [0, 6]]
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-07-15
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多