繁体   English   中英

将列表的元素转换为字符串

[英]converting elements of a list to string

我想获取存储在列表中的元素的字符串文本,比如List<Car> toArray()和toString()方法是最好的选择吗?

另一个想法是使用Apache Commons Lang编写以下代码:

StringUtils.join(myList);

您的兴趣是您还可以提供分隔符,例如:

StringUtils.join(myList, " ; ");

提供您不反对遵循约定的字符串输出:

[A, B, C]

...你可以简单地调用ListtoString()方法来获取你的输出(我不确定为什么人们主张为此使用循环)。 覆盖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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM