java - 如何在java中按元素数量对2D字符串数组进行排序

标签 java arrays string sorting multidimensional-array

我知道这可能是一个简单的问题,但我无法想出合适的算法。我有一个二维字符串数组,我想按元素数量对其进行排序:假设数组如下:

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/

相关文章:

php - 正则表达式:按特定顺序匹配字符串中至少 3 个字符

string - 如何在 Java 8 中使用 Map Put 操作编写字符串迭代?

java - Android 中出现意外的顶级异常 : bad class file magic,

python - 如何将 2D numpy 数组的 2D numpy 数组重构为 4D float 组?

PHP:数组里面有一个if语句

javascript - 在两个数组中查找匹配值

.net - 在c++/cli中将std::string或string ^转换为字节数组

java - JPA获取实体对象的id

java - 如何确定极大的质因数?

java xpath 返回意外值