Java:从ArrayList获取所有第一个条目

时间:2019-03-01 09:07:50

标签: java arrays arraylist

我有一个ArrayList(〜900个条目),其中包含用户信息数组:

[swaschit, Sophia Waschitz, Dormant, Inactive, 1/1/2018]
[kolanday, Kyle Olanday, Dormant, Inactive, 1/1/2018]
[npowers, Neil Powers, Assigned, Active, 2/11/2018]

我想从此列表中生成一个仅包含每个对象的第一个元素的数组:

[swaschit, kolanday, npowers, ...]

最有效的方法是什么?

4 个答案:

答案 0 :(得分:5)

一种方法是对每个内部数组的第一个元素使用Streammap

List<String> firstElements = yourList.stream()
                                     .map(x -> x[0].toString()) // you might need toString() here if your array is an Object[]
                                     .collect(Collectors.toList());

如果您想要一个字符串数组:

String[] firstElements = yourList.stream()
                                     .map(x -> x[0].toString()) // you might need toString() here if your array is an Object[]
                                     .toArray(String[]::new);

我还建议您不要使用这样的嵌套数组。您应该使用要存储的属性创建一个类,并为该类创建一个List

答案 1 :(得分:1)

由于我认为第一个条目是唯一的(因为它似乎是用户名),所以建议使用Map。这样,您只需列出密钥即可。

HashMap<String,ArrayList<String>> hashmap=new HashMap<>();

或者,您可以简单地创建一个包含该信息的类,以避免需要使用ArrayList,但是我不知道这是否是一个选择。

答案 2 :(得分:0)

如使用适当设计的Object而非此类异类数据的array所指出的(猜测它们实际上是String)。

如果坚持使用现有方式,则只需要分配一个具有原始ArrayList大小的新数组并进行遍历,以获取所需的列即可。假设ArrayList<String[]> list

int size = list.size();
String[] firstColumn = new String[size];
for (int i = 0; i < list.size(); i++) {
    firstColumn[i] = list.get(i)[0];
}

答案 3 :(得分:-1)

我想你可以做 list.stream().map(array -> array[0].toString()).toArray()