【发布时间】:2013-08-21 23:46:38
【问题描述】:
我有一个 HashMap 中的条目列表,一个 String 作为 Key,一个 Long 作为 Value。我正在尝试检查 Value 是否大于某个数字,但我不确定如何获取该值并进行检查。
我知道这是不正确的,但这可能比我能解释的更能说明我的意思:
long offlineTimeLimit = (offlineTimeLimitConfig*1000);
long limit = (offlineTimeLimit + System.currentTimeMillis());
Long playerName = playerTimeCheck.get(p);
if (playerTimeCheck.containsValue( > limit)) {
}
这会获取允许玩家离线的时间量 offlimeTimeLimitConfig,然后乘以 1000(因此以毫秒为单位),然后加上当前时间。我想检查hashmap中是否有任何值大于当前时间加上时间限制,然后执行代码。
我一直在做研究,并找到了存储数据的其他方法(例如 TreeMap),但我不确定这是否是存储数据的更好方法。
下面是剩下的代码:
String p = event.getPlayer().getName();
HashMap<String, Long> playerTimeCheck = new HashMap<String, Long>();
ConfigurationSection section = getConfig().getConfigurationSection("PlayerTime");
long currentTime = System.currentTimeMillis();
String playerCheck = getConfig().getString("PlayerTime");
for (String key : section.getKeys(false)) {
playerTimeCheck.put(key, section.getLong(key));
}
感谢您的帮助, 科尔比
【问题讨论】:
-
您只需要知道地图中的任何值是否大于某个数字?我只会使用树形图,按降序排序,然后检查第一项的值是否 > 您的值...
-
@jcampos8782 树形图是按键排序的,这里不起作用。
-
哦,是的,没错...只需使用按值排序的比较器:stackoverflow.com/questions/1448369/…
标签: java hashmap compare contains treemap