Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “如何排序”;ArrayList<;HashMap<;字符串,字符串>&燃气轮机;arrList";按字母顺序?_Java_Android_Arrays_Sorting - Fatal编程技术网

Java “如何排序”;ArrayList<;HashMap<;字符串,字符串>&燃气轮机;arrList";按字母顺序?

Java “如何排序”;ArrayList<;HashMap<;字符串,字符串>&燃气轮机;arrList";按字母顺序?,java,android,arrays,sorting,Java,Android,Arrays,Sorting,您能指导我如何按字母顺序对具有哈希映射的数组列表进行排序吗 JSONArray jArr2 = new JSONArray(jsonString2); for(int i=0;i<jArr2.length();i++){ HashMap<String, String> map = new HashMap<String, String>(); map.put("titleName",jArr2.getJSONObject(i).getString("title

您能指导我如何按字母顺序对具有哈希映射的数组列表进行排序吗

JSONArray   jArr2 = new JSONArray(jsonString2);

for(int i=0;i<jArr2.length();i++){

HashMap<String, String> map = new HashMap<String, String>();
map.put("titleName",jArr2.getJSONObject(i).getString("titleName"))
programList.add(map);

}
JSONArray jArr2=新的JSONArray(jsonString2);

对于(int i=0;i实现一个
比较器
,它只提取与value键关联的值,然后使用Collections.sort方法对arraylist进行排序

例如:

class MyComparator implements Comparator<Map<String, String>>{

    private final String key;

    public MyComparator(String key)
    {
        this.key = key;
    }

    public int compare(Map<String, String> first,
                       Map<String, String> second)
    {
        // TODO: Null checking, both for maps and values
        String firstValue = first.get(key);
        String secondValue = second.get(key);
        return firstValue.compareTo(secondValue);
    }
}
类MyComparator实现比较器{
私有最终字符串密钥;
公共MyComperator(字符串键)
{
this.key=key;
}
公共整数比较(映射优先,
地图(秒)
{
//TODO:对映射和值进行空检查
字符串firstValue=first.get(键);
字符串secondValue=second.get(键);
返回firstValue.compareTo(secondValue);
}
}

实现一个
比较器
,它只提取与值键关联的值,然后使用Collections.sort方法对arraylist进行排序

例如:

class MyComparator implements Comparator<Map<String, String>>{

    private final String key;

    public MyComparator(String key)
    {
        this.key = key;
    }

    public int compare(Map<String, String> first,
                       Map<String, String> second)
    {
        // TODO: Null checking, both for maps and values
        String firstValue = first.get(key);
        String secondValue = second.get(key);
        return firstValue.compareTo(secondValue);
    }
}
类MyComparator实现比较器{
私有最终字符串密钥;
公共MyComperator(字符串键)
{
this.key=key;
}
公共整数比较(映射优先,
地图(秒)
{
//TODO:对映射和值进行空检查
字符串firstValue=first.get(键);
字符串secondValue=second.get(键);
返回firstValue.compareTo(secondValue);
}
}

是的,您可以将Collections.sort()与自定义比较器一起使用

这应该是你必须上的课

class YourCustomComparator implements Comparator<HashMap<String, String>> {

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

        // check here your objects. lhs and rhs. compare them as you want
        // return 1 if lhs is greater than rhs
        // return 0 if ther are same
        // return -1 otherwise
    }
}
类YourCustomComparator实现Comparator{
@凌驾
公共整数比较(哈希映射lhs、哈希映射rhs){
//在这里检查您的对象。lhs和rhs。根据需要进行比较
//如果lhs大于rhs,则返回1
//如果它们相同,则返回0
//否则返回-1
}
}

是的,您可以将Collections.sort()与自定义比较器一起使用

这应该是你必须上的课

class YourCustomComparator implements Comparator<HashMap<String, String>> {

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

        // check here your objects. lhs and rhs. compare them as you want
        // return 1 if lhs is greater than rhs
        // return 0 if ther are same
        // return -1 otherwise
    }
}
类YourCustomComparator实现Comparator{
@凌驾
公共整数比较(哈希映射lhs、哈希映射rhs){
//在这里检查您的对象。lhs和rhs。根据需要进行比较
//如果lhs大于rhs,则返回1
//如果它们相同,则返回0
//否则返回-1
}
}

看看你的例子,我认为你根本不需要地图。你拥有的是一个地图列表,其中每个地图只有一个键,即“标题名”。为什么不只拥有一个标题名列表?那么你的代码如下所示:

JSONArray jArr2 = new JSONArray(jsonString2);

List<String> titleNames = new ArrayList<>();

for (int i = 0; i < jArr2.length(); i++) {

    titleNames.add(jArr2.getJSONObject(i).getString("titleName"))

}

请注意,这将起作用,而地图列表上建议Collections.sort()的其他答案将不起作用。这是因为titlenames是一个字符串列表,它实现了Compariable(即sort()方法知道如何对它们进行相互排序),而Map不实现Compariable(因为有多种方法可以对映射进行排序—条目数、字节总数等)。

看看您的示例,我认为您根本不需要映射。您拥有的是一个映射列表,其中每个映射只有一个键,即“titleName”。为什么不只拥有一个titleName列表?那么您的代码如下所示:

JSONArray jArr2 = new JSONArray(jsonString2);

List<String> titleNames = new ArrayList<>();

for (int i = 0; i < jArr2.length(); i++) {

    titleNames.add(jArr2.getJSONObject(i).getString("titleName"))

}

请注意,这将起作用,而地图列表上建议Collections.sort()的其他答案将不起作用。这是因为titlenames是一个字符串列表,它实现了Compariable(即sort()方法知道如何对它们进行相互排序),而Map不实现Compariable(因为有多种方法可以对映射进行排序—条目数、总字节数等)。

尝试使用java中的COllections.Sort()?使用带有适当比较器的树映射?对映射列表进行排序意味着什么?您是否只对一个键(“titleName”)感兴趣?Collections.Sort无法直接解决此问题,因为它比较的是对象而不是值。请进一步澄清您的要求。您的ArrayList包含HashMap。您正在谈论按字母顺序排序HashMap?或者什么?尝试使用Collections.Sort()在java中?使用带有适当比较器的树映射?对映射列表进行排序意味着什么?您是否只对单个键(“titleName”)感兴趣?Collections.Sort不会直接解决此问题,因为它比较的是对象而不是值。请进一步澄清您的要求。您的ArrayList包含HashMap。您正在谈论按字母顺序排序HashMap?或者什么?如果这有助于您解决问题,请接受答案。请参阅接受答案的工作原理:Do accept thee如果这有助于您解决问题,请回答。请参阅接受答案的工作原理: