java - ArrayList 或 HashMap<String, String> 的不同排序方式

标签 java android sorting arraylist

有很多与此相关的问题建议使用 Comparator比较和排序数据,我已经在尝试并努力使其工作,所以请不要将其报告为重复。

我有一个数组列表 HashMap<String, String>

ArrayList<HashMap<String, String>>

并以这种形式在此列表中包含数据,

title , linknumber是 key 。

{ {title="",link="",number=}, {title="",link="",number=}, {title="",link="",number=} }

示例,

{ {title,link,number = 8}, {title,link,number = 1}, {title,link,number = 3} }

应改为,

{ {title,link,number = 1}, {title,link,number = 3}, {title,link,number = 8} }

我想根据数字对其进行排序,我已经尝试过,

我创建了一个实现比较器的新类(正如许多帖子中建议的那样创建新类来比较数据)。

public class SortData implements Comparator<ArrayList<HashMap<String, String>>> 

自动实现的方法是,

@Override
    public int compare(ArrayList<HashMap<String, String>> lhs,
            ArrayList<HashMap<String, String>> rhs) {


        return 0;
    }

现在这个方法建议使用 Hashmap 的两个 arraylist 来比较,但是由于我只有一个需要排序的 arraylist,所以我应该使用第二个 arraylist 吗?

我的Arraylist名称是SecondArray ,我想将它的每个值与下一个值进行比较,

 @Override
        public int compare(ArrayList<HashMap<String, String>> lhs,
                ArrayList<HashMap<String, String>> rhs) {

                lhs = SecondArray;
                rhs = // How to compare to the next value of the same Array ? 
            return 0;
        }

我应该如何将相同的数组列表与下一个值进行比较?

更新: 每个数组列表元素都有三个键/值对,其中一个是数字,我想根据该数字对数组列表进行排序,这意味着数字最小的键/值对应该在数组中第一个列表。

最佳答案

将工具更改为Comparator<Hashmap<String,String>>并使用:

public int compare(HashMap<String, String>> lhs,
        HashMap<String, String>> rhs) {
    return Integer.compare(Integer.parseInt(lhs.get("number")),
        Integer.parseInt(rhs.get("number")));
}

我假设您指的是(哈希)映射列表。

关于java - ArrayList 或 HashMap<String, String> 的不同排序方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27865113/

相关文章:

android - 与 Jetpack Compose 一起使用时,WebView 在输入时崩溃

arrays - 优化算法安排一个数组,其中偶数索引的项目在数组的左侧,奇数索引的项目在数组的右侧

javascript - 带有 getElementsByTagName 的嵌套标签名称不起作用

java - 使用反射访问类型参数

java - Microsoft Face API(Android)中缺少属性类型。如何使用 Emotion 属性?

java - 我可以关闭底层输出流并让装饰器 BufferedOutputStream 未关闭吗

java - 在我的 HTC Evo 上使用 Eclipse 进行 Android 调试 : Augh!

java - NullPointerException - edittext.gettext()

java - 在 Java 中从文件中读取单词/短语,进行区分,然后写入另一个文件

java - 使用 java.io 对 native java 数组进行高效序列化