如何检查Hashmap的第一个元素?

时间:2012-07-25 12:08:46

标签: java hashmap

  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”。

希望我现在很清楚。

我编码的方式有变化吗?

7 个答案:

答案 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))获取,通过迭代条目获得了什么?

如果反正只是真的那么。​​