3 回答
TA贡献1719条经验 获得超6个赞
由于您使用的是 Java 7 并且流不可用,因此您可以:
使用更简单的
for语法(假设user.getTasks()返回一个Task对象列表 - 如果没有,则替换Task为您的类)遍历字符串,将它们与分隔符连接起来
ArrayList<String> test = new ArrayList<String>();
for (Task task : user.getTasks()) {
test.add(task.getTask().toString());
}
Collections.sort(test);
// make a string of the values with a pipe separator
StringBuilder valuesToPrint = new StringBuilder();
for (int index = 0; index < test.size(); index++) {
if (index > 0) {
valuesToPrint.append(" | ");
}
valuesToPrint.append(test);
}
System.out.println(valuesToPrint.toString());
TA贡献1853条经验 获得超6个赞
正如所指出的,Java 8 StreamAPI 提供了很多实用程序来执行这些任务,但是如果你想使用循环来保持你的解决方案并且你想避免三个替换,而不是调用toString()列表然后清理它,您应该在构建一个String
String result = "";
for (String item : test) {
result += item + " | ";
}
System.out.println(result.substring(0, result.length() - 3);
请注意,您打印的结果会删除最后三个字符以避免打印 Tast1 | 任务2 | 任务3|
TA贡献1810条经验 获得超4个赞
Java 8+ 您可以将其简化为:
List<String> test = new ArrayList<String>();
String result = user.getTasks().stream()
.map(t -> t.getTask().toString())
.sorted()
.collect(Collectors.joining("|"));
System.out.println(result);
这将在列表中创建一个Stream,String对它们进行排序,然后将它们加入到String每个|项目之间
或者,如果您需要对排序列表进行其他操作,您可以对其进行排序,然后在之后执行流部分:
Collections.sort(test);
String result = test.stream().collect(Collectors.joining("|"));
添加回答
举报
