在java中检索内部元素

时间:2016-07-22 19:54:00

标签: java arrays list loops

在一个数组列表中,在java中,有没有一种方法可以获得一个列表,该列表由包含原始列表的数组上的所有第i个元素组成?

例如(伪代码):

输入

List<int[3]> A = {[1,2,3], [2,3,5], [1,0,7]}
i = 2

输出:

B = {2,3,0}

我真的希望在没有明确编写for循环或while循环或任何其他常规循环结构的情况下实现此目的。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您可以使用streams

int i = 2;
List<Integer> listB = listA.stream()
    .filter(arr -> arr.length > i) // (Optional) Filter out arrays that are too small.
    .map(arr -> arr[i]) // Get element at index i.
    .collect(Collectors.toList()); // Collect into a list.

答案 1 :(得分:0)

在java 8之前,除了遍历列表并选择所需位置的每个元素之外别无他法:

实施例

在Java8之前

public static void main(String[] args) {

List<int[]> aL = new ArrayList();
aL.add(new int[] { 1, 2, 3 });
aL.add(new int[] { 2, 3, 5 });
aL.add(new int[] { 1, 0, 7 });
int index = 1;
List<Integer> aLFinal = new ArrayList();

for (int[] i : aL) {
    aLFinal.add(i[index]);
}
System.out.println("the list before java8 " + aLFinal);
}

在Java8之后

aLFinal = aL.stream().map(arr -> arr[index]).collect(Collectors.toList());
System.out.println("the list after java8 " + aLFinal);

答案 2 :(得分:0)

希望这是你需要的

public List<Integer> getYourResult(List<Integer[]> yourList, int index) {
    if (index >= 3) return null;
    List<Integer> result = new ArrayList<>();
    for (int i = 0; i < yourList.size(); ++i) {
        result.add(i, yourList.get(i)[index]);
    }
    return result;
}
相关问题