标签: treemap

TreeMap 如何搜索给定条目的后继?

我对以下方法有点困惑 java.util.TreeMap:

static <K,V> TreeMap.Entry<K,V> successor(Entry<K,V> t) {
        if (t == null)
            return null;
        else if (t.right != null) {
            Entry<K,V> p = t.right;
            while (p.left != null)
                p = p.left;
            return p;
        } else {
            Entry<K,V> p = t.parent;
            Entry<K,V> ch = t;
            while (p != null && ch == p.right) {
                ch = p;
                p = p.parent;
            }
            return p;
        }
    }
Run Code Online (Sandbox Code Playgroud)

此方法用于 TreeMap 的containsValue方法中。并告诉它检索第一个条目的后继和先前检索的后继的后继等。因此,上述方法检索整个 TreeMap 的条目。但我不太明白它是如何运作的,它如何寻找继任者?

谢谢!

java algorithm treemap

0
推荐指数
1
解决办法
992
查看次数

如何自定义 TreeMap 以按降序对键进行排序?

我有一段代码,我试图用它按TreeMap降序对键进行排序,因为当我只使用 时TreeMap,它会根据按升序排列的键进行排序。我收到的错误是:

没有找到适合 TreeMap 的构造函数。

这是怎么回事?

import java.util.TreeMap;
import java.util.Map;
import java.util.Comparator;
import java.util.Map.Entry;
import java.util.SortedMap;

public class ChangeMachine {


    public TreeMap<Double, Integer> dispenseChange(Double changeAmount, TreeMap<Double, Integer> coinsMap) {
        TreeMap<Double, Integer> coinDispenserMap = new TreeMap<>();
        for (Map.Entry<Double, Integer> coin : coinsMap.entrySet()) {
            if (!(changeAmount > coin.getKey())) {
                coinDispenserMap.put(coin.getKey(), 0);
                continue;
            }
            int noOfCoins = (int) (changeAmount / coin.getKey());
            coinDispenserMap.put(coin.getKey(), noOfCoins);
            Double remainder = changeAmount % coin.getKey();
            changeAmount = remainder;
            if (changeAmount == 0.0) {
                break;
            } …
Run Code Online (Sandbox Code Playgroud)

java sorting treemap

0
推荐指数
1
解决办法
1343
查看次数

如何在 Java 中为 TreeMap 编写自定义比较器?

我想在 TreeMap 中存储键值对,并根据以下逻辑根据 Key 的值对条目进行排序:

按键的长度排序。如果两个键的长度相同,则按字母顺序对它们进行排序。例如,对于以下键值对。

IBARAKI MitoCity
TOCHIGI UtunomiyaCity
GUNMA MaehashiCity
SAITAMA SaitamaCity
CHIBA ChibaCity
TOKYO Sinjyuku
KANAGAWA YokohamaCity
Run Code Online (Sandbox Code Playgroud)

预期的输出是这样的。

CHIBA : ChibaCity
GUNMA : MaehashiCity
TOKYO : Sinjyuku
IBARAKI : MitoCity
SAITAMA : SaitamaCity
TOCHIGI : UtunomiyaCity
KANAGAWA : YokohamaCity
Run Code Online (Sandbox Code Playgroud)

java treemap comparator

0
推荐指数
2
解决办法
1万
查看次数

Kotlin - 缺少 TreeMap

为什么 Kotlin 中没有 TreeMap ?我知道我们可以使用 java utils 来使用 TreeMap,但这可能不是真正的原因。我们可以使用 HashMap 实现同样的目的吗?

java treemap kotlin

0
推荐指数
1
解决办法
1529
查看次数

keySet和entrySet需要定义的方法?

这是相当荒谬的,我不确定为什么会发生这种情况,但每当我尝试使用.keySet或者.entrySet我在Eclipse中得到错误时都会为它创建一个新方法.

java treemap

-1
推荐指数
1
解决办法
87
查看次数

使用map.get(Object)时TreeMap返回null

使用get方法获取值时, TreeMap将值打印为null,而它正常工作HashMap().请在下面找到示例代码并为此提供输入.

它适用于Hashmap,因为它使用equals()/hashcode()方法,而TreeMap是SortedMap,它不使用equals方法来比较两个对象.相反,它使用比较器/可比较来比较对象,但在使用get方法获取对象时,它将null作为响应.请在此提供一些清晰度.

    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.TreeMap;

    class Employees implements Comparable<Employees>, Comparator<Employees> {

        public Employees(String name, int id) {
            super();
        this.name = name;
        this.id = id;
    }

    private String name;
    private int id;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

java collections treemap

-1
推荐指数
1
解决办法
262
查看次数

为什么LinkedHashMap无法在TreeMap中对HashMap进行排序?

我正在尝试HashMap使用LinkedHashMap和排序输出TreeMap.

当我用它TreeMap来理清HashMap它就像一个魅力.

        Map<Integer, String> hMap = new HashMap<Integer, String>();

        hMap.put(40, "d");
        hMap.put(10, "a");
        hMap.put(30, "c");
        hMap.put(20, "b");

        System.out.println(" ");
        System.out.println("before");

        for (Map.Entry m1 : hMap.entrySet()) {
            System.out.print(m1.getKey() + " " + m1.getValue() + "    ");
        }

        System.out.println("after");

        Map<Integer, String> hTree = new TreeMap<Integer, String>(hMap);
        for (Map.Entry m2 : hTree.entrySet()) {
            System.out.print(m2.getKey() + " " + m2.getValue() + "    ");
        }
Run Code Online (Sandbox Code Playgroud)

输出:
before 20 b 40 d 10 a 30 c …

java collections hashmap treemap linkedhashmap

-1
推荐指数
3
解决办法
171
查看次数

如何按(日期)值对TreeMap进行排序?

可能重复:
TreeMap按值排序可以按值
的顺序迭代的Map

我有一个类型的TreeMap <String, Date>.我想通过日期(最近的第一)对它进行排序,我不能把它们作为密钥,因为我不能保证他们将是独一无二的.有没有办法做到这一点?

java treemap

-3
推荐指数
1
解决办法
6765
查看次数