Java 打印和访问列表<;字符串[]>;
我正在读取一个文件并将其存储在t1中。如何访问t1中的元素?当我试图打印它时,我得到的是地址而不是值。还有Java 打印和访问列表<;字符串[]>;,java,string,list,Java,String,List,我正在读取一个文件并将其存储在t1中。如何访问t1中的元素?当我试图打印它时,我得到的是地址而不是值。还有String和String[]之间的区别是什么 CSVReader reader = new CSVReader(new FileReader("src/new_acquisitions.csv")); List <String[]> t1 = reader.readAll(); int i = 0 while(i
String
和String[]
之间的区别是什么
CSVReader reader = new CSVReader(new FileReader("src/new_acquisitions.csv"));
List <String[]> t1 = reader.readAll();
int i = 0
while(i < t1.size()) {
System.out.println(t1.get(i));
i++;
}
String[]是一个字符串数组,因此它没有按预期打印,请尝试:
for (int i = 0; i < t1.size(); i++) {
String[] strings = t1.get(i);
for (int j = 0; j < strings.length; j++) {
System.out.print(strings[j] + " ");
}
System.out.println();
}
或者更好:
for (String[] strings : t1) {
System.out.println(Arrays.toString(strings));
}
String[]
是字符串数组。打印数组的地址-当您看到[L
时,表示数组。您必须迭代每个数组的元素,而不是打印地址:
String[] temp = t1.get(i);
for (int j = 0; j < temp.length; j++)
System.out.println(temp[j]);
String[]temp=t1.get(i);
对于(int j=0;j
正如Petar所提到的,您的列表是字符串数组的列表,因此您打印的是数组,而不是数组内容
打印数组内容的一种惰性方法是使用以下命令将数组转换为列表
:
给予
[“你好”,“世界”]
打印带有数组的列表。当列表类重载toString()方法来打印每个元素时,数组使用对象使用的默认toString,它只打印类名和标识哈希 要打印所有内容,您必须遍历列表并使用array.toString()打印每个数组 或者将每个数组放入一个列表中
List<List<String>> tt1 = new ArrayList<List<String>>();
for(String[] ar: t1)tt1.add(Arrays.asList(ar));//wraps the arrays in constant length lists
System.out.println(tt1)
List tt1=new ArrayList();
for(String[]ar:t1)tt1.add(Arrays.asList(ar));//将数组包装在恒定长度的列表中
系统输出打印项次(tt1)
正如我在中所说,在创建自己的记录对象时,您可以实现toString()
函数,以返回该信息的合理表示形式。您可以打印列表内容,只需先将列表转换为数组,然后使用Arrays.toString,如下所示
System.out.println(Arrays.toString(your_list.toArray());
使用streams、Java 8及更高版本:
List<String[]> t1 = reader.readAll();
List<String> l = t1.stream()
.flatMap(x -> Arrays.stream(x))
.collect(Collectors.toList());
System.out.println(Arrays.toString(l.toArray()));
List t1=reader.readAll();
列表l=t1.stream()
.flatMap(x->array.stream(x))
.collect(Collectors.toList());
System.out.println(Arrays.toString(l.toArray());
基本上,flatMap()是这样做的:
Stream(String[])=>flatten和Mapit to=>Stream(String)
“将数组转换为列表”-可能转换为字符串?记住“接受”一个对您最有帮助的答案(使用绿色复选标记)。在Java 8中有没有方法可以不使用循环执行同样的操作?我得到了一个
列表和数组。deepToString(List.toArray())
效果非常好!数组。deepToString(List.toArray())对我有用。谢谢
for(String[] ar:t1)System.out.print("["+Arrays.toString(ar)+"]");
List<List<String>> tt1 = new ArrayList<List<String>>();
for(String[] ar: t1)tt1.add(Arrays.asList(ar));//wraps the arrays in constant length lists
System.out.println(tt1)
System.out.println(Arrays.toString(your_list.toArray());
List<String[]> t1 = reader.readAll();
List<String> l = t1.stream()
.flatMap(x -> Arrays.stream(x))
.collect(Collectors.toList());
System.out.println(Arrays.toString(l.toArray()));