if(callingflag)
{
int calledUserTp = totalPointsByUserid(callinguserid,jokercard);
System.out.println("Total Points of the User Who has made a Call is ::"+calledUserTp);
HashMap<Integer,Integer> useridTotalRankMap = totalPointsforEveryUser(jokercard);
HashMap<Integer,Integer> useridTotalRankMapSorted = new HashMap<Integer, Integer>();
useridTotalRankMapSorted = (HashMap<Integer, Integer>) sortByComparator(useridTotalRankMap);
for(Map.Entry<Integer, Integer> entry :useridTotalRankMapSorted.entrySet())
{
System.out.println( entry.getKey() +"----"+entry.getValue());
if(entry.getKey() == callinguserid )
{
System.out.println( "GOOD CALL");
break;
}
}
}
如何避免上面提到的for循环。 useridTotalRankMapSorted是一个Map
我有一个名为useridTotalRankMap的hashmap,它将具有一些总点数的用户ID。
我想检查对应于calleruserid的值是否是该hashmap中最小的值,前提是没有关联。
说是
1:4
4:7
3:7
2:5
和calleruserid = 1。如果key = 1的值,即4是最小值,则打印“good call”。
希望我现在很清楚。
我编码的方式有变化吗?
答案 0 :(得分:5)
HashMap未排序。它没有第一个元素。
答案 1 :(得分:3)
使用useridTotalRankMapSorted.entrySet().iterator().next()
访问第一项。更好地确保你 确实使用了有序地图!
答案 2 :(得分:3)
你可以使用Map
等排序TreeMap
来完成它,获取第一个元素的最简单方法是使用迭代器(如果你想保存插入顺序LinkedHashMap
):
Map m = new TreeMap(); // get it from somewhere else otherwise it doesn't make sense
Set s = m.entrySet();
Iterator i = s.iterator();
if (i.hasNext()) {
Object firstElement = i.next();
}
答案 3 :(得分:2)
HashMap
不保证订单。
此课程不保证地图的顺序;在 特别是,它不保证订单将保持不变 随着时间的推移。
来自http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html
要维护广告订单,您应使用LinkedHashMap
。
使用Hash表和Map接口的链表实现 可预测的迭代顺序。此实现与HashMap不同 因为它维护着一个贯穿所有链接的双向链表 条目。该链表定义了迭代排序,即 通常是键插入地图的顺序 (插入顺序)。请注意,如果键是插入顺序不受影响 被重新插入地图。
来自http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashMap.html
要维护排序顺序(自然排序顺序,或由Comparator
定义),您应该使用任何实现SortedMap
的类。
进一步提供其键的总排序的Map。地图是 根据其键的自然顺序或通过a键排序 比较器通常在有序地图创建时提供。这个命令 迭代在有序地图的集合视图
上时会反映出来
来自http://docs.oracle.com/javase/6/docs/api/java/util/SortedMap.html
答案 4 :(得分:0)
您需要创建LinkedHashMap
以获取第一个插入的元素
然后 - &gt;
useridTotalRankMapSorted.entrySet().iterator().next().getKey()
useridTotalRankMapSorted.entrySet().iterator().next().getValue()
答案 5 :(得分:0)
1。 HashMap
类 未实施 Sorted Map
接口
2。如果您想按顺序获取数据,请使用TreeMap
。
3。如果您希望节点相互链接,然后获取第一个元素,请使用LinkedHashMap
。
答案 6 :(得分:0)
首先,正如其他人所说,HashMap没有排序。
其次,因为Map中的键是唯一的(不能将键映射到多个值)。
为什么不从地图(map.get(callinguserId)
)获取,通过迭代条目获得了什么?
如果反正只是真的那么。