我编写了以下工作代码。我相信它可以做得更好或更有效,但是我不太确定如何进行。
我最不满意的是三个替换。
ArrayList<String> test = new ArrayList<String>();
for (int i = 0; i < user.getTasks().size(); i++) {
test.add(user.getTasks.get(i).getTask().toString());
}
Collections.sort(test);
System.out.println(test.toString().replace(",", " |").replace("[", "").replace("]", ""));
输出如下所示:Tast1 | Task2 | Task3很好。
请随时提出任何问题,我反应迅速。
答案 0 :(得分:2)
由于您使用的是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());
答案 1 :(得分:0)
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
中,并且每个项目之间的|
< / p>
或者,如果您需要对已排序列表进行其他操作,则可以对其进行排序,然后在以下部分进行流处理:
Collections.sort(test);
String result = test.stream().collect(Collectors.joining("|"));
答案 2 :(得分:0)
如前所述,Java 8 Stream
API提供了许多实用程序来执行此类任务,但是,如果您希望使用循环来保持解决方案,并且希望避免三个替换,而不是调用{ {1}},然后清理它,您应该在构建toString()
String
请注意,打印结果时请切出最后三个字符,以避免打印Tast1 | Task2 | Task3 String result = "";
for (String item : test) {
result += item + " | ";
}
System.out.println(result.substring(0, result.length() - 3);