gpt4 book ai didi

以元组为键的Java映射,通过元组键删除/获取

转载 作者:行者123 更新时间:2023-11-29 10:08:41 26 4
gpt4 key购买 nike

我有一个场景,我想要一个以元组为键的排序映射:

var scheduledRunnables = new TreeMap<Tuple<Integer, String>, Runnable>(Comparator.comparing(Tuple::getKey));

添加的时候,我要添加一个元组:

scheduledRunnables.put(new Tuple<>(order, taskName), task);

排序时,我希望它按顺序整数排序,因为它决定了可运行对象的执行顺序。我不一定知道变量 taskName 的值。调用 get 时,我只想提供订单整数,原因与前面所述相同。调用 put 时,我想考虑整个对。所以像这样:

scheduledRunnables.put(new Tuple<>(1, "Some task"), () -> System.out.println("asdf"));
scheduledRunnables.get(1).run(); // Should output 'asdf'
scheduledRunnables.put(new Tuple<>(1, "Some task"), () -> System.out.println("qwerty"));
scheduledRunnables.get(1).run(); // Should output 'qwerty'
scheduledRunnables.remove(1).run(); // Should output 'qwerty' and remove from map

Tuple 类只是一个数据容器,如下所示:

@Data
public class Tuple<K, V> {

private final K key;
private V value;

public Tuple(K key, V value) {
this.key = key;
this.value = value;
}

}

这将如何实现?如果不对 SortedMap 接口(interface)进行自定义实现,是否有可能?有没有更好的方法来实现我所追求的目标?

最佳答案

老实说,只维护两张 map 。

Map<Integer, Runnable> idToRunnable;
Map<Integer, String> idToName;

或者使用元组作为值而不是键:

Map<Integer, Tuple<String, Runnable>>

关于以元组为键的Java映射,通过元组键删除/获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54787587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com