我必须按字母顺序对数组中的每一项进行排序
in:[bcdef, dbaqc, abcde, omadd, bbbbb]out:[bcdef, abcdq, abcde, addmo, bbbbb]
我写了下面的代码,但我觉得它很冗长。
你能告诉我另一种代码更短的方法吗?
谢谢
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import static java.lang.String.copyValueOf;
public class Main {
public static void main(String[] args) {
String[] stringsArray = { "bcdef", "dbaqc", "abcde", "omadd", "bbbbb"};
System.out.println(Arrays.toString(stringsArray));
List<String> list = Arrays.stream(stringsArray).map((String s)->{
char[] charArray = s.toCharArray();
Arrays.sort(charArray);
return copyValueOf(charArray);
}).collect(Collectors.toList());
ArrayList<String> arrayList = new ArrayList<String>(list);
stringsArray = Arrays.copyOf(arrayList.toArray(),arrayList.size(),String[].class);
System.out.println(Arrays.toString(stringsArray));
}
}
因为必须按字母顺序排序,所以可以使用数组。sort()
。
public class Sorting {
public static void main(String[] args) {
String[] stringsArray = { "bcdef", "dbaqc", "abcde", "omadd", "bbbbb"};
System.out.println("Initial array - " + Arrays.toString(stringsArray));
Arrays.sort(stringsArray);
System.out.println("Sorted array - " + Arrays.toString(stringsArray));
}
}
或者使用stream,如果您想保持原始数组未排序。
public class Sorting {
public static void main(String[] args) {
String[] stringsArray = { "bcdef", "dbaqc", "abcde", "omadd", "bbbbb"};
System.out.println("Initial array - " + Arrays.toString(stringsArray));
String[] sortedArray = Arrays.stream(stringsArray)
.sorted()
.toArray(String[]::new);
System.out.println("New sorted array with stream - " + Arrays.toString(sortedArray));
}
}
看起来您希望对每个元素中的字符进行排序,而不是整个数组。
您可以通过使用单独的map()
(和peek()
)来简化,因为数组。sort()
方法未返回值)步骤。通过直接收集到字符串
数组,也可以跳过冗余的列表
。
String[] sorted = Arrays.stream(stringsArray)
.map(String::toCharArray)
.peek(Arrays::sort)
.map(String::new)
.toArray(String[]::new);
问题内容: 我正在开发一个 Java Web应用程序 ,其中包括 一个applet 。该小程序依赖于两个jar文件: JFreeChart(用于在客户端绘制图) -1.7 mb(jar文件的大小) MySqlJdbcConnector(用于将在客户端捕获的数据存储到远程数据库)-. 7 mb(JAR文件的大小) 现在,问题是上述两个jar文件的大小。我的小应用程序jar (myApplet.jar
我有一个应用程序,它使用大量的内存来区分两个潜在的巨大(100k)目录的内容。对我来说,这样的操作会占用大量内存是有道理的,但是一旦我的 diff'ing 操作完成,堆的大小就会保持不变。 我基本上有实例化类的代码,用于存储源和目标上每个文件的文件名、文件大小、路径和修改日期。我将添加、删除和更新保存在其他数组中。然后,我我的源数组和目标数组(现在可能每个都是100k),只剩下相对较小的添加、删除
问题内容: 我是AWS Lambda的新手,我已使用处理程序创建了Lambda函数 这是自定义处理程序,现在我想从我的Java程序中调用它,我需要如何做。 问题答案: 此类中的2种方法应该可以为您提供帮助。一种是用于需要传递有效负载的情况,另一种是用于有效负载为null的情况。 但是,您需要记住一件事:函数名称可能与处理程序不同(后者在)。调用其功能时 不 使用该处理程序名称。 因此,如果您有一个
问题内容: 我们将Java 6 JRE与我们的应用程序安装程序捆绑在一起,以便可以在任何计算机上运行,但这会使应用程序变得更重。因此,我们计划减小JRE的大小。如果有人完成了此类任务,您能否提供指导以继续前进? 问题答案: 查看JRE目录中的README文件。“可选文件和目录”部分列出了一些文件(如果将它们与应用程序打包在一起,可以从Oracle / Sun JRE中删除)。 创建安装时,我使
问题内容: 让我们比较一下c:Hello_world.c: Hello_world.go: 都编译: 还有,这是什么? 大约1Mb的世界。你在跟我开玩笑吗?我做错了什么? (仅限Hello_go-> 893K) 问题答案: 文件较大是否有问题?我不知道Go,但是我认为它会静态链接某些运行时库,而C程序则不是这种情况。但是,只要程序变大,就不必担心。 如上所述这里,静态链接Go运行时是默认的。该页面
我有一个Gatsby.js项目,其中我的包的解析大小是3.92MB。其中1.1MB是。传单似乎也提供了只有508KB的。阅读本期后,每当我导入传单时,我总是导入较小的版本,如下所示: 不管怎样,每当我运行Webpack Bundle Analyzer时,都会导入和:Webpack Bundle Analyzer Result 我提到的GitHub问题似乎暗示了如何配置webpack以使用优化版本,