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()))