我知道这可能是一个简单的问题,但我无法想出合适的算法。我有一个二维字符串数组,我想按元素数量对其进行排序:假设数组如下:
public class arraysort
{
public static void main(String[] args)
{
String[][] terms = {{"java", "php", "ruby", "csharp", "dotnet", "perl"},
{"google", "apple", "oracle", "microsoft", "sun"},
{"http", "web", "dns", "net", "protocol", "packet","ip"},
{"london","madrid","berlin","ankara","astana"}};
}
}
如何以这种方式按元素数量排序数组(5,5,6,7):
[google, apple, oracle, microsoft, sun]
[london, madrid, berlin, ankara, astana]
[java, php, ruby, csharp, dotnet, perl]
[http, web, dns, net, protocol, packet, ip]
另外,对我来说很有趣的是,当每个组中的元素数量相等时会发生什么,例如“google”和“london”组具有相同数量的元素。感谢您的帮助!
最佳答案
使用java.util.Arrays.sort(...)
(the Arrays class API link)。其中一个方法重载采用带有 Comparator 参数的数组参数,在 Comparator 的 compare(...)
方法中,比较子数组的长度。 p>
例如,
Arrays.sort(terms, (a1, a2) -> Integer.compare(a1.length, a2.length));
例如,
import java.util.Arrays;
public class Sort2DArrays {
public static void main(String[] args) {
String[][] terms = { { "java", "php", "ruby", "csharp", "dotnet", "perl" },
{ "google", "apple", "oracle", "microsoft", "sun" },
{ "http", "web", "dns", "net", "protocol", "packet", "ip" },
{ "london", "madrid", "berlin", "ankara", "astana" } };
Arrays.sort(terms, (a1, a2) -> Integer.compare(a1.length, a2.length));
for (String[] term : terms) {
System.out.println(Arrays.toString(term) + ", length: " + term.length);
}
}
}
关于java - 如何在java中按元素数量对2D字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39938599/