Java:从ArrayList获取所有第一个条目
我有一个ArrayList(~900个条目),其中包含用户信息数组: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,
[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
如何帮助将值放入数组也不明显。