作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个场景,我想要一个以元组为键的排序映射:
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/
我是一名优秀的程序员,十分优秀!