【问题标题】:How to compare two values in TreeMap?如何比较 TreeMap 中的两个值?
【发布时间】:2018-08-07 09:42:42
【问题描述】:

我有一个 TreeMap,我想比较它的 ii+1 值。我怎样才能做到这一点。我知道 TreeMap 是根据其键排序的,但我想比较值并且不能使用排序,因为我会丢失原始形式。我想要这样的东西,但在 TreeMap-

int a[] = new int[n];
for (int i = 0; i < a.length - 1; i++)
{
     if (a[i] > a[i + 1])
    {
         c++;
    }
}

【问题讨论】:

  • “类似这样的东西,但在 TreeMap 中”给出答案有点含糊。您至少可以给出 Treemap 的声明,并告诉我们映射包含哪些类型的 Key/Value。但最后你可以像 java 中的任何对象一样比较值:使用 compareTo 方法。
  • A TreeMapNavigableMap,因此您可以使用该接口的方法来比较相邻条目。这就是你所追求的吗?

标签: java hashmap treemap


【解决方案1】:

你可以这样做:

        TreeMap<Integer,Integer> tree=new TreeMap<>();          
        tree.put(1,5);
        tree.put(2,6);
        tree.put(3,4);
        tree.put(4,4);   

        Entry<Integer,Integer> entry=tree.firstEntry();
        int c=0;
        while(tree.higherEntry(entry.getKey())!=null) {
            if(entry.getValue()>tree.higherEntry(entry.getKey()).getValue())
                c++;
            entry=tree.higherEntry(entry.getKey());
        }

使用higherEntry、higherKey等

顺便说一下,在您的示例中,您将得到一个 ArrayIndexOutOFBound 我认为是因为 a[i + 1]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多