爪哇 2博客
 爪哇 2博客

如何在Java中按键和值对HashMap进行排序

哈希图 不会保留元素的顺序,但是如果您想按键或值对其排序,该怎么办。在这篇文章中,我们将看到如何排序 哈希图 通过键或值。

爪哇 哈希图教程:

按键排序:

使用键可以很容易地完成排序 树状图。您只需要将HashMap传递给 树状图.

1
2
3
 
树状图 地图 = 树状图( 地图 );
 

按值排序:

我们可以用 比较器 按值对它进行排序。

按键排序示例:

如下创建Country.java。它应该实现Comparable接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
组织 .Arpit. 爪哇 2blog;  
上市 国家 实施 可比 {  
 
名称 ;  
人口;  
 
上市 国家( 名称 , 人口) {  
  ();  
   这个 . 名称 = 名称 ;  
   这个 .人口 = 人口;  
}  
上市 得到 Name() {  
  返回 名称 ;  
}  
上市 虚空 setName( 名称 ) {  
   这个 . 名称 = 名称 ;  
}  
上市 得到 Population() {  
  返回 人口;  
}  
上市 虚空 setPopulation( 人口) {  
   这个 .人口 = 人口;  
}
@覆写
上市 整型 相比于(目的 o) {
    国家 国家=(国家) o;
返回 这个 . 得到 Name().相比于(国家. 得到 Name());
}  
 
}  
 

如下创建TreeMapCompMain.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
组织 .Arpit. 爪哇 2blog;
 
进口 爪哇 . 实用程序 .哈希图;
进口 爪哇 . 实用程序 .迭代器;
进口 爪哇 . 实用程序 .树状图;
 
上市 树状图CompMain {
 
上市 静态的 虚空 主要 ([] args )
{
  国家 印度= 国家(“印度”,1000);  
        国家 日本= 国家(“日本”,10000);  
 
        国家 法国= 国家(“法国”,2000);  
        国家 俄国= 国家(“俄国”,20000);  
 
        哈希图<国家, > 国家CapitalMap= 哈希图<国家,>();  
        国家CapitalMap.(印度,“德里”);  
        国家CapitalMap.(日本,);  
        国家CapitalMap.(法国,“巴黎”);  
        国家CapitalMap.(俄国,“莫斯科”);  
 
        系统..打印(“通过将HashMap传递给TreeMap构造函数进行排序”);
        树状图<国家,> 分类 edTreeMapCountryCapital=  树状图<国家,> (国家CapitalMap);
        迭代器 国家CapitalIter= 分类 edTreeMapCountryCapital.键集().迭代器();//将调试点放在这一行  
        (国家CapitalIter.hasNext())  
        {  
            国家 国家Obj=国家CapitalIter. 下一个 ();  
             首都=国家CapitalMap. 得到 (国家Obj);  
            系统..打印(国家Obj. 得到 Name()+“ - --”+首都);  
            }  
        }  
 
}
 

运行程序时,将获得以下输出:

1
2
3
4
5
6
7
 
排序 哈希图 通过 通过 树状图 建设者
法国 - - 巴黎
印度 - - 新德里
日本 - - 东京
俄国 - - 莫斯科
 

按值排序示例:

在这里,我们将按其值对HashMap进行排序。在这里我正在使用HashMap 使示例更简单。
例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
组织 .Arpit. 爪哇 2blog;
 
进口 爪哇 . 实用程序 .馆藏;
进口 爪哇 . 实用程序 .比较器;
进口 爪哇 . 实用程序 .哈希图;
进口 爪哇 . 实用程序 .LinkedHashMap;
进口 爪哇 . 实用程序 .数组列表;
进口 爪哇 . 实用程序 . 清单 ;
进口 爪哇 . 实用程序 . 地图 .条目;
进口 爪哇 . 实用程序 .;
 
上市 哈希图Main {
 
上市 静态的 虚空 主要 ( args []) {
  //以国家/地区名称为键,以资本为值的HashMap
  // 哈希图将元素存储在键值对中
  哈希图<, > 国家CapitalMap = 哈希图<, >();
 
  国家CapitalMap.(“日本”, );
  国家CapitalMap.(“法国”, “巴黎”);
  国家CapitalMap.(“俄国”, “莫斯科”);
  国家CapitalMap.(“印度”, “德里”);
 
  系统..打印(“ - ---------------------------”);
  //使用keySet()并针对每个循环迭代HashMap
  系统..打印(“排序之前”);
  系统..打印(“ - ---------------------------”);
   对于 ( 国家Key : 国家CapitalMap.键集()) {
   系统..打印(“国家:” + 国家Key + “和  Capital:" + 国家CapitalMap. 得到 (国家Key));
 
  }
 
  <条目<, >> 国家CapitalEntrySet=国家CapitalMap.条目Set();
 
   清单 <条目<, >> 条目List= 数组列表<条目<, >>(国家CapitalEntrySet);
 
  馆藏. 分类 (条目List, 比较器<条目<,>>() {
 
   @覆写
   上市 整型 相比(条目<,> o1, 条目<,> o2) {
    返回 o1. 得到 Value().相比于(o2. 得到 Value());
   }
  });
  系统..打印(“ - ---------------------------”);
 
  //使用LinkedHashMop使条目保持排序
  LinkedHashMap<,> 分类 edHashMap= LinkedHashMap<,>();
   对于 (条目<,> 条目:条目List) {
   分类 edHashMap.(条目. 得到 Key(), 条目. 得到 Value());
  }
 
  系统..打印(“排序后”);
  系统..打印(“ - ---------------------------”);
  //使用keySet()并针对每个循环迭代sortedHashMap
 
   对于 ( 国家Key : 分类 edHashMap.键集()) {
   系统..打印(“国家:” + 国家Key + “和  Capital:" + 分类 edHashMap. 得到 (国家Key));
 
  }
}
}
 

当您在程序上方运行时,将获得以下输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
- - - - - - - - - - - - - - -
之前 排序
- - - - - - - - - - - - - - -
国家:法国   首都:巴黎
国家:俄国   首都:莫斯科
国家: 日本   首都:东京
国家:印度   首都:新德里
- - - - - - - - - - - - - - -
排序
- - - - - - - - - - - - - - -
国家:印度   首都:新德里
国家:俄国   首都:莫斯科
国家:法国   首都:巴黎
国家: 日本   首都:东京
 

说明:

  1. 使用keySet()方法从HashMap中提取密钥集。
  2. 从上面的设置创建ArrayList
  3. 使用以下在ArrayList上排序 比较器
  4. 创造 LinkedHashMap 从排序列表

导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 10月02

    用Java中的值初始化ArrayList

    在本文中,我们将学习使用Java中的值初始化ArrayList。 数组列表是Java中List接口的实现类。它用于存储元素。它基于动态增长的阵列概念。我们可以通过几种方式用值初始化ArrayList。让’我们看到了其中一些…]

  • 3月17日

    爪哇 8中的PriorityQueue

    在本文中,我们将介绍Java 8 PriorityQueue。当应该根据对象的优先级处理对象时,在这种情况下,我们使用PriorityQueue。这是一种特殊的队列(也称为非绑定队列),可以根据元素的自然顺序或基于[…]

  • 10月06日

    2d Arraylist 爪哇 示例

    在本文中,我们将看到如何在Java中创建2d Arraylist。创建2d Arraylist的最佳方法是在Java中创建列表的列表。 [crayon-601b03067df04322268742 /]让’s创建一个程序来实现2d Arraylist 爪哇 。 [crayon-601b03067df08511995766 /]输出:list3中的第二个元素:List3_Str2 list1中的第三个元素:List1_Str3 list2中的第一个元素[…]

  • 04 May

    哈希图如何在Java中工作

    最常见的面试问题是<code>HashMap如何在Java中工作</code>, “HashMap的获取和放置方法如何在内部工作”。在这里,我试图通过一个简单的示例来解释内部功能。 [crayon-601b03068e373388087892-i /]是Java中最常用的Collections之一,与其从理论上讲,不如从理论上入手,这样您就可以[…]

  • 10月21日

    如何在Java中对HashSet进行排序

    在本文中,我们将看到如何在Java中对HashSet进行排序。 哈希集是一个不按任何顺序存储元素的集合。您可能会遇到需要对HashSet进行排序的情况。排序HashSet的方法有很多种,我们将在这里看到两种方法。使用TreeSet可以使用[…]

  • 10月20日

    要设置的Java数组

    在本文中,我们将学习Java数组设置转换。有很多方法可以将数组转换为set。 1.使用Java 8’s Stream如果您使用的是Java 8,建议您使用此方法。 [crayon-601b03067e0a4107590336 /]输出[John,Martin,Mary] 2.使用HashSet构造函数()我们可以直接调用HashSet‘s的java构造函数set […]

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇 2博客