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

Java:从ArrayList获取所有第一个条目,java,arrays,arraylist,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,

我有一个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, ...]

最有效的方法是什么?

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

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

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

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

HashMap<String,ArrayList<String>> hashmap=new HashMap<>();
HashMap HashMap=newhashmap();
或者,您可以简单地创建一个包含该信息的类,以避免使用ArrayList,但我不知道这是否是一个选项。

我想您可以这样做
list.stream()

list.stream().map(数组->数组[0].toString()).toArray()
一种方法是使用
流和
将每个内部数组映射到其第一个元素:

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

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

一种方法是使用
将每个内部数组映射到其第一个元素:

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

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

正如所指出的那样,使用适当设计的
对象
而不是此类异构数据的
数组
(猜测它们实际上是
字符串

如果您坚持保持原来的方式,那么只需分配一个与原始
ArrayList
大小相同的新数组,然后迭代,获取所需的列。假设
ArrayList列表

int size = list.size();
String[] firstColumn = new String[size];
for (int i = 0; i < list.size(); i++) {
    firstColumn[i] = list.get(i)[0];
}
int size=list.size();
字符串[]第一列=新字符串[大小];
对于(int i=0;i
正如所指出的,使用适当设计的
对象,而不是此类异构数据的
数组(猜测它们实际上是
字符串)

如果您坚持保持原来的方式,那么只需分配一个与原始
ArrayList
大小相同的新数组,然后迭代,获取所需的列。假设
ArrayList列表

int size = list.size();
String[] firstColumn = new String[size];
for (int i = 0; i < list.size(); i++) {
    firstColumn[i] = list.get(i)[0];
}
int size=list.size();
字符串[]第一列=新字符串[大小];
对于(int i=0;i
不要使用数组,而是创建您自己的类
User
,该类包含
用户名
名称
分配状态
活动
出生日期
@Lino我正在使用CSVParser从CSV文件生成列表。有没有办法直接将数据保存到自定义类中?不要使用数组,而是创建自己的类
User
,该类包含
username
name
assignedState
activity
birthdate
@Lino我正在使用CSVParser从CSV文件生成列表。有没有办法将数据直接保存到自定义类中?由于这是未选中的强制转换,最好使用toString方法,在字符串对象@Мааааабббабаабаабаааа1072。因此,我认为一个
.toArray(新字符串[0])
是合适的。由于这是未经检查的强制转换,最好使用toString方法,它返回
这个
指针,以防字符串对象@МаааааааГбббГбббббб。因此,我认为一个
.toArray(新字符串[0])
是合适的。我不太确定唯一性(它们似乎只是用固定的最大大小连接了名字和姓氏)。另外,使用
HashMap
如何帮助将值放入数组中也不明显。我不太确定唯一性(它们似乎只是以固定的最大大小将名字和姓氏连接起来)。另外,使用
HashMap
如何帮助将值放入数组也不明显。