按字母顺序对字符串数组进行排序

我已经编写了以下工作代码。我相信它可以做得更好或更高效,但我不太确定如何继续。


我最不满意的是三个替换。


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 | 任务2 | Task3,很好。


请不要犹豫,问任何问题,我超级响应。


江户川乱折腾
浏览 142回答 3
3回答

慕侠2389804

由于您使用的是 Java 7 并且流不可用,因此您可以:使用更简单的for语法(假设user.getTasks()返回一个Task对象列表 - 如果没有,则替换Task为您的类)遍历字符串,将它们与分隔符连接起来ArrayList<String> test = new ArrayList<String>();&nbsp;for (Task task : user.getTasks()) {&nbsp; &nbsp; test.add(task.getTask().toString());}Collections.sort(test);// make a string of the values with a pipe separatorStringBuilder valuesToPrint = new StringBuilder();for (int index = 0; index < test.size(); index++) {&nbsp; &nbsp; if (index > 0) {&nbsp; &nbsp; &nbsp; &nbsp; valuesToPrint.append(" | ");&nbsp; &nbsp; }&nbsp; &nbsp; valuesToPrint.append(test);}System.out.println(valuesToPrint.toString());

墨色风雨

正如所指出的,Java 8 StreamAPI 提供了很多实用程序来执行这些任务,但是如果你想使用循环来保持你的解决方案并且你想避免三个替换,而不是调用toString()列表然后清理它,您应该在构建一个StringString result = "";for (String item : test) {&nbsp; &nbsp; result += item + " | ";}System.out.println(result.substring(0, result.length() - 3);请注意,您打印的结果会删除最后三个字符以避免打印 Tast1 | 任务2 | 任务3|

蝴蝶不菲

Java 8+ 您可以将其简化为:List<String> test = new ArrayList<String>();&nbsp;String result = user.getTasks().stream()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.map(t -> t.getTask().toString())&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.sorted()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.collect(Collectors.joining("|"));System.out.println(result);这将在列表中创建一个Stream,String对它们进行排序,然后将它们加入到String每个|项目之间或者,如果您需要对排序列表进行其他操作,您可以对其进行排序,然后在之后执行流部分:Collections.sort(test);String result = test.stream().collect(Collectors.joining("|"));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java