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

时间:2018-10-09 18:48:05

标签: java list arraylist

我在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 个答案:

答案 0 :(得分:2)

 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));
     }

答案 1 :(得分: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]

这需要Java 8 +。

答案 2 :(得分:2)

这里已经有很好的答案了,但是这是一个我可以匹配到您的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));

答案 3 :(得分:2)

此外,您也可以使用Arrays.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]

答案 4 :(得分:1)

我已经用Integers List做到了。请根据需要将其修改为“字符串列表”。

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