Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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中的集合排序_Java_Sorting_Hashmap - Fatal编程技术网

java中的集合排序

java中的集合排序,java,sorting,hashmap,Java,Sorting,Hashmap,我有一个HashMap,它在Strings中的键为Date,值为自定义对象的ArrayList。我想根据密钥对这个hashmap进行排序。我该怎么做 HashMap<String,List<ClassName>> hashmap = new HashMap<String,List<ClassName>>(); 请建议。您可以使用TreeMap而不是HashMap。TreeMap实现了排序地图界面。首先,当您需要排序地图时,可以使用TreeMap。

我有一个
HashMap
,它在
String
s中的键为
Date
,值为自定义对象的
ArrayList
。我想根据密钥对这个hashmap进行排序。我该怎么做

HashMap<String,List<ClassName>> hashmap = new HashMap<String,List<ClassName>>();

请建议。

您可以使用
TreeMap
而不是
HashMap
TreeMap
实现了排序地图界面。

首先,当您需要排序地图时,可以使用
TreeMap
。但是,您将日期值存储为字符串。然后就很难对它们进行比较了。因此我建议使用
java.util.Date
而不是
String
。添加到地图时,可以使用日期格式化程序。使用以下代码

TreeMap<Date, List> treeMap = new TreeMap<>();
TreeMap TreeMap=newtreemap();

您可以在
TreeMap
的构造函数中指定
比较器。因此,可以很容易地根据自定义顺序对内容进行排序。

如果需要排序后的地图,可以使用TreeMap

如果您不想使用TreeMap,那么获取密钥并按如下方式对其进行排序

HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();
    map.put("2015/07/15", list);
    map.put("2015/07/17", list1);
    map.put("2015/07/16", list1);

    ArrayList<String> keyset = new ArrayList<String>(map.keySet());
    Collections.sort(keyset);
HashMap map=newhashmap();
地图放置(“2015/07/15”,列表);
地图放置(“2015/07/17”,列表1);
地图放置(“2015/07/16”,列表1);
ArrayList keyset=新的ArrayList(map.keyset());
Collections.sort(键集);

以及使用排序映射(如其他人所建议的),您可以在使用键时而不是插入键时轻松对键进行排序

例如,在Java 8中:

treeMap.keySet().stream().sorted().forEach(System.out:println);
这样做的一个好处是,使用不同的比较器进行排序很容易,而无需更改集合

例如,如果要按列表值中的项数排序,请执行以下操作:

treeMap.keySet().stream().sorted(Comparator.comparingInt(k -> treeMap.get().size()))

此方法适用于经常在映射中插入和更改值,然后偶尔需要为特定操作排序键的情况。您可以获得
HashMap的性能,但在使用时可以灵活地按照您的意愿进行排序。

查看更多想法,我可以不使用treemap进行排序吗?谢谢您的回复。如果我按集合排序。按建议排序(键集)。地图会被分类吗?
treeMap.keySet().stream().sorted(Comparator.comparingInt(k -> treeMap.get().size()))