为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥9229398 2022-07-14 16:56:52
我有一个包含用户信息数组的 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 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

一种方法是使用 aStreammap每个内部数组到它的第一个元素:

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类。


查看完整回答
反对 回复 2022-07-14
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

因为我认为第一个条目是唯一的(因为它似乎是用户名),所以我建议使用 Map. 这样,您可以简单地列出键。

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

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


查看完整回答
反对 回复 2022-07-14
?
偶然的你

TA贡献1841条经验 获得超3个赞

正如所指出的那样,使用适当设计的Object而不是array此类异构数据(猜测它们String实际上是 s)。


如果您坚持保持原样,您只需要分配一个具有原始大小的新数组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];

}


查看完整回答
反对 回复 2022-07-14
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

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



查看完整回答
反对 回复 2022-07-14
  • 4 回答
  • 0 关注
  • 532 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信