有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java创建列表并获取每个列表的最后一项

我用python创建了一个列表,其中包括3个其他列表。我可以将整数附加到每个列表中,然后打印这些列表的最后一项。代码如下:

L = [[] for i in range(3)]

L[0].append(1)
L[0].append(2)
L[0].append(3)
L[1].append(4)
L[1].append(5)
L[1].append(6)
L[2].append(7)
L[2].append(8)
L[2].append(9)

last = map (lambda x: x[-1], L)
print (last)

以下是输出:

[3, 6, 9]

现在我正试图用Java编写这段代码,但由于我是Java新手,我在向每个列表添加项目并获取每个列表的最后一项时遇到了问题。我知道ArrayList<ArrayList<String>> listOLists = new ArrayList<ArrayList<String>>();将创建一个列表列表,但接下来我该怎么做


共 (5) 个答案

  1. # 1 楼答案

    我已经用整数列表完成了这项工作。如果需要,请将其修改为字符串列表

    List<List<Integer>> listOLists = new ArrayList();
    
        List<Integer> firstList = new ArrayList<>();
        firstList.add(1);
        firstList.add(2);
        firstList.add(3);
        listOLists.add(firstList);
    
        List<Integer> secondList = new ArrayList<>();
        secondList.add(4);
        secondList.add(5);
        secondList.add(6);
        listOLists.add(secondList);
    
        List<Integer> thirdList = new ArrayList<>();
        thirdList.add(7);
        thirdList.add(8);
        thirdList.add(9);
        listOLists.add(thirdList);
    
        System.out.println(listOLists); //prints whole listOfLists
        listOLists.forEach(l -> System.out.println(l.get(l.size()-1))); //prints only last elements
    
  2. # 2 楼答案

    要扩展@Praveen的答案:

    List<List<Integer>> listOLists = new ArrayList();
    
    List<Integer> firstList = new ArrayList<>();
    firstList.add(1);
    firstList.add(2);
    firstList.add(3);
    listOLists.add(firstList);
    
    List<Integer> secondList = new ArrayList<>();
    secondList.add(4);
    secondList.add(5);
    secondList.add(6);
    listOLists.add(secondList);
    
    List<Integer> thirdList = new ArrayList<>();
    thirdList.add(7);
    thirdList.add(8);
    thirdList.add(9);
    listOLists.add(thirdList);
    
    listOLists.forEach(l -> System.out.println(l.get(l.size() - 1)));
    

    这将打印出:

    3
    6
    9
    

    如果希望它准确地打印Python示例中的内容,请将最后一行更改为:

    System.out.println(listOLists.stream().map(l -> l.get(l.size() - 1)).collect(Collectors.toList()));
    ....
    [3, 6, 9]
    

    这需要Java8+

  3. # 3 楼答案

    这里已经有了很好的答案,但这里有一个选项是我能与您的python示例最接近的:

        List<List<Integer>> L = new ArrayList<>();
        L.add(new ArrayList<Integer>());
        L.add(new ArrayList<Integer>());
        L.add(new ArrayList<Integer>());
    
        L.get(0).add(1);
        L.get(0).add(2);
        L.get(0).add(3);
        L.get(1).add(4);
        L.get(1).add(5);
        L.get(1).add(6);
        L.get(2).add(7);
        L.get(2).add(8);
        L.get(2).add(9);
    
        int[] last = L.stream().mapToInt(x -> x.get(x.size() - 1)).toArray();
        System.out.println(Arrays.toString(last));
    
  4. # 4 楼答案

    您还可以使用阵列来执行此操作。asList()方法。在这种情况下,您不必每次都键入新的代码行来添加新的值,而是直接将它们添加到现有的数组中

        List<Integer> firstList = Arrays.asList(1, 2, 3);
        List<Integer> secondList = Arrays.asList(4, 5, 6);
        List<Integer> thirdList = Arrays.asList(7, 8, 9);
    
        List<List<Integer>> listOLists = Arrays.asList(firstList, secondList, thirdList);
    
        List <Integer> sv = new ArrayList<>();
        listOLists.forEach(l -> sv.add(l.get(l.size() - 1)));
    
        System.out.println(listOLists);
        System.out.println("The last indexes are " + sv);
    

    结果是:

    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    The last indexes are [3, 6, 9]
    
  5. # 5 楼答案

     List<List<String>> listOfLists = new ArrayList<>();
    
         List<String> l1 = new ArrayList<>();
         l1.add("one");
         l1.add("two");
         listOfLists.add(l1);
    
         List<String> l2 = new ArrayList<>();
         l2.add("three");
         l2.add("four");
         listOfLists.add(l2);
    
         /*print last element of each list*/
    
         for(List list:listOfLists){
             System.out.println(list.get(list.size() - 1));
         }