Java中如何对HashMap进行排序

=Start=

缘由:

Java中HashMap的值是没有顺序的,它是按照key的HashCode来实现的。对于这个无序的HashMap我们要怎么来实现排序呢?这里就整理总结一下,方便以后查阅、参考。

正文:

参考解答:

先说结论,如果着急的话可以先看这个/只看这个就够:

Java中对 HashMap 进行排序的一般步骤就是:

1、先根据 HashMap 的内容生成 list ;
2、再调用 Collections.sort(list[, new Comparator]) 对 list 进行就地排序;
2.1、 内部进行的比较一般是通过 .compareTo() 方法进行的,但是也可以自行修改「大于返回1,小于返回-1,等于返回0」;
3、 如果只要排序后的结果的话,可以直接用 list ;如果还要一个map的话,就新建一个LinkedHashMap来存放list的结果。


Java中的原生排序方法整理:

  • 对基本类型排序 # Arrays.sort()
  • 对对象数组排序 # 则要自己实现 java.util.Comparator 接口

Java中打印数组的方法,参考「链接」。


再放整理后的代码:

 

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3973.html

《Java中如何对HashMap进行排序》上有4条评论

  1. java集合遍历的几种方式总结及比较
    https://www.cnblogs.com/leskang/p/6031282.html

    集合类的通用遍历方式,用迭代器迭代:
    Iterator it = list.iterator();
    while(it.hasNext()) {
    Object obj = it.next();
    }

    Map的几种遍历方式
    List的几种遍历方式
    数据元素是怎样在内存中存放的?
    每个遍历方法的实现原理是什么?
    各遍历方式对于不同的存储方式,性能如何?
    各遍历方式的适用于什么场合?

    Java的最佳实践是什么?
    if (list instanceof RandomAccess) {
    //使用传统的for循环遍历。
    } else {
    //使用Iterator或者foreach。
    }

  2. Java中如何打印 byte[]
    https://stackoverflow.com/questions/6463580/how-to-print-the-data-in-byte-array-as-characters/6463665#6463665

    byte[] byteArray = new byte[] { -1, -128, 1, 127 };
    System.out.println(Arrays.toString(byteArray));

    Java中打印数组的最简单方法
    https://stackoverflow.com/questions/409784/whats-the-simplest-way-to-print-a-java-array

    # 简单数组(各种类型都可以,比如 int/double/String/byte)
    String[] array = new String[] {"John", "Mary", "Bob"};
    System.out.println(Arrays.toString(array));

    # 嵌套数组
    String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
    System.out.println(Arrays.toString(deepArray));
    // output: [[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]
    System.out.println(Arrays.deepToString(deepArray));
    // [[John, Mary], [Alice, Bob]]

发表评论

电子邮件地址不会被公开。 必填项已用*标注