java - 如何根据一列对一维(或二维)数组(多维)进行排序?

标签 java android arrays sorting csv

我在 android 项目中有一个逗号分隔的字符串数组,如下所示:

1,orange,$5
2,apple,$6
3,banana,$8

我想按字段对数组进行排序,比如按第二个字段苹果、香蕉、橙...

处理此问题的最佳数据结构或算法是什么?

最佳答案

使用自定义比较器对数组进行排序:

import java.util.Arrays;
import java.util.Comparator;

class Fruits {

    public static void main(final String[] args) {
        final String[][] data = new String[][] {
                new String[] { "1", "orange", "$5" },
                new String[] { "2", "apple", "$6" },
                new String[] { "3", "banana", "$8" } };

        Arrays.sort(data, new Comparator<String[]>() {
            @Override
            public int compare(final String[] entry1, final String[] entry2) {
                final String fruit1 = entry1[1];
                final String fruit2 = entry2[1];
                return fruit1.compareTo(fruit2);
            }
        });

        for (final String[] s : data) {
            System.out.println(s[0] + " - " + s[1] + " - " + s[2]);
        }
    }

}

输出:

2 - apple - $6
3 - banana - $8
1 - orange - $5

您可以阅读更多内容:

http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html

How does this comparator work?

关于java - 如何根据一列对一维(或二维)数组(多维)进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29430608/

相关文章:

javascript - JavaScript 数组简单

java - 带有继承的双向一对多不起作用(jpa 与 hibernate 3.5.4)

java - 将服务的 getBean 替换为 @Autowired

java - Android - 计算并存储算术表达式的答案

C++:在重载 ostream 时引用 2D 数组元素时崩溃 >>

c - 显示包含空格的字符串中每个单词的第一个字母

java - 在 Maven Central 中搜索扩展给定类的类

单击按钮后 Java setText 不更新

android - 在 Android 上使用 Google map 进行路线规划

android - Gradle添加时间戳构建失败(未找到.apk)