[英]converting elements of a list to string
我想获取存储在列表中的元素的字符串文本,比如List<Car>
。 toArray()和toString()方法是最好的选择吗?
另一个想法是使用Apache Commons Lang编写以下代码:
StringUtils.join(myList);
您的兴趣是您还可以提供分隔符,例如:
StringUtils.join(myList, " ; ");
提供您不反对遵循约定的字符串输出:
[A, B, C]
...你可以简单地调用List
的toString()
方法来获取你的输出(我不确定为什么人们主张为此使用循环)。 覆盖Car的toString()
方法以返回对象的人性友好描述也是明智的。
但是,如果您希望将每个元素作为单个String
,则需要一次迭代List一个元素。
java.util.Arrays
有一个static toString(Object[])
方法。 使用List的toArray()
结果调用它(如您所建议的)应该完成这项工作。
是的,但手动操作可以让您获得更多控制权:
// initialize with the exact length
List<String> stringsList = new ArrayList<String>(listOfCars.size());
for (Car car : listOfCars) {
stringsList.add(car.toString());
}
如果你没有覆盖toString()
方法或者不想覆盖它,你可以使用car.getName()
而不是car.toString()
(或你喜欢的任何属性组合)
您可以使用Java 8 Streams
List<Car> carList = new ArrayList<>();
//Add some elemts to carList
carList.stream()
.map(Car::toString) // maps Car Object to a value returned by toString method
.collect(Collectors.joining(","));
有关详细信息,请参阅JavaDoc有关Collectors
的信息。
首先将List(Collection)转换为数组,然后创建每个元素的字符串。
Arrays.toString(myCollection.toArray());
我不想给hkbharath单独回答,这是一个很好的答案,但我想提供更多使用Java 8流的例子。 Collectors.joining()有一些不同的重载变体。
让我们说他的例子中的代码:
carList.stream()
.map(Car::toString) // maps Car Object to a value returned by toString method
.collect(Collectors.joining(","));
给你这个:福特,本田,别克
然后,如果您不需要分隔符:
carList.stream()
.map(Car::toString) // maps Car Object to a value returned by toString method
.collect(Collectors.joining());
会反过来给你:FordHondaBuick
这是一个扩展示例,显示如何操作每个字符串,更改分隔符,以及添加前缀和后缀:
carList.stream()
.map(Car::toString) // maps Car Object to a value returned by toString method
.map(String::toUpperCase) // Transform to upper case
.collect(Collectors.joining("; ", "[", "]"));
相反会给你:[福特; HONDA; 别克]
for (Car car : carsList) { // carsList is the object of List<Car>
System.out.println(car);
}
注意:只有在重写了Car类的toString()方法时,上面才会显示有意义的消息。
例如
public class Car {
private String carName;
....
....
public String toString() {
return carName;
}
}
应该重写toString()方法以返回有关字符串形式的对象的有意义信息。
在您的情况下,我认为有意义的信息将是汽车的所有细节。 因此,重写toString()方法是最好的方法,而不是使用getCarName()或类似的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.