我正在使用HashMap.当我遍历地图时,数据以(通常是相同的)随机顺序返回.但是数据是按特定顺序插入的,我需要保留插入顺序.我怎样才能做到这一点?
我有下面的值与哈希值映射,在值中我已经日期为字符串数据类型。我想比较地图中所有可用的日期,并仅提取一个具有最近日期的键值。
我想与值而不是键进行比较。
我已包含以下代码
import java.util.HashMap;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("1", "1999-01-01");
map.put("2", "2013-10-11");
map.put("3", "2011-02-20");
map.put("4", "2014-09-09");
map.forEach((k, v) -> System.out.println("Key : " + k + " Value : " + v));
}
}
Run Code Online (Sandbox Code Playgroud)
预期的输出是:
关键4值2014-09-09
我试图找出如何从中得到前10个值HashMap.我最初尝试使用TreeMap它并按值排序然后取前10个值,但似乎这不是选项,因为TreeMap按键排序.
我想仍然能够知道哪些键具有最高值,K, V即地图的值String, Integer.
可能重复:
如何迭代Map中的每个条目?
我有一个MAP, Map<String, Records> map = new HashMap<String, Records> ();
public class Records
{
String countryName;
long numberOfDays;
public String getCountryName() {
return countryName;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
public long getNumberOfDays() {
return numberOfDays;
}
public void setNumberOfDays(long numberOfDays) {
this.numberOfDays = numberOfDays;
}
public Records(long days,String cName)
{
numberOfDays=days;
countryName=cName;
}
public Records()
{
this.countryName=countryName;
this.numberOfDays=numberOfDays;
}
Run Code Online (Sandbox Code Playgroud)
我已经实现了map的方法,现在请告诉我如何访问hashmap中存在的所有值.我需要在Android的UI上显示它们吗?
我在HashMap中插入具有不同键的四个值.代码片段:
HashMap<Integer, String> choice = new HashMap<Integer, String>();
choice.put(1, "1917");
choice.put(2, "1791");
choice.put(3, "1902");
choice.put(4, "1997");
Run Code Online (Sandbox Code Playgroud)
但是当我打印那个地图值时,它返回的结果如下:
{4 = 1997年,1 = 1917年,2 = 1791年,3 = 1902年}
如何按照插入/插入的顺序获取地图值?
这基本上不是HashMap基于键的排序方式.为此,我可以直接使用TreeMap没有眨眼:)
我现在拥有的是
Map<String, Object> favoritesMap = new HashMap<String, Object>();
and its contents can be
["Wednesdays" : "abcd"]
["Mondays" : "1234"]
["Not Categorized" : "pqrs"]
["Tuesdays" : "5678"]
Run Code Online (Sandbox Code Playgroud)
我想基于键对HashMap进行排序,除此之外,我需要"未分类"才能找到最后一个.
因此,在迭代keySet时所期望的是
["Mondays", "Tuesdays", "Wednesdays", "Not Categorized"] i.e. sorted on keys and "Not Categorized" is the last one
Run Code Online (Sandbox Code Playgroud)
想HashMap在创建时加入,["Not Categorized" : "pqrs"]但最后添加但HashMap不保证顺序:)
解决方案的任何其他指针?
想象一下这样的情况:我有一个HashMap<Integer, String>,我在其中存储连接的客户端。是的HashMap,因为顺序无关紧要,我需要速度。它看起来像这样:
{
3: "John",
528: "Bob",
712: "Sue"
}
Run Code Online (Sandbox Code Playgroud)
大多数客户端断开连接,所以这就是为什么我有很大的差距。如果我想添加一个新客户端,我需要一个密钥,显然_map.size()获取密钥的用法是不正确的。
所以,目前我使用这个函数来获取最低可用键:
private int lowestAvailableKey(HashMap<?, ?> _map) {
if (_map.isEmpty() == false) {
for (int i = 0; i <= _map.size(); i++) {
if (_map.containsKey(i) == false) {
return i;
}
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在某些情况下,这真的很慢。有没有更快或更专业的方法来获得 a 的最低自由键HashMap?
我正在处理的任务有点问题.基本上,我有一个文件,学生证和他们的名字采用以下格式:
17987贝丝
17950克拉克
17936亚伦
我把文件的内容放在一个数组中,我需要按名称排序,而不是ID.如果我使用Arrays.sort(myArray)它将按ID自动排序.我很难理解比较器,所以如果你能逐步解释它,对我来说会更容易.谢谢!
我有地图Map<LocalDateTime, String>。
如何按键值对其进行排序?我应该使用什么比较器?
someMap.entrySet().stream().sorted(Comparator.comparing(???))
Run Code Online (Sandbox Code Playgroud)
或者
someMap.entrySet().stream().sorted(??)
Run Code Online (Sandbox Code Playgroud)
我该如何解决?我应该写什么来代替“??” ?
排序:
Key Value
2020-01-09 09:57:58.631 Some info
2020-01-09 09:57:59.224 Some info
2020-01-09 09:59:03.144 Info
Run Code Online (Sandbox Code Playgroud)
不排序:
Key Value
2020-01-09 09:57:58.631 Some info
2020-01-09 09:59:03.144 Info
2020-01-09 09:57:59.224 Some info
Run Code Online (Sandbox Code Playgroud)