gpt4 book ai didi

java - 通用 BiDiMap

转载 作者:行者123 更新时间:2023-11-30 06:01:23 30 4
gpt4 key购买 nike

我有一个 BiDiMap 类。如何使其通用,不仅接受 String 而且接受 Object 类型的对象作为输入参数,同时保持所有原始函数正常工作。例如,我希望能够使用函数 put()ObjectObject 作为输入参数,而不是 String字符串。我想将 String 类型的所有输入参数和返回值更改为 Object 类型。

package MyBiDiMap;

import java.util.HashMap;
import java.util.Map;

public class BiDiMap {

private Map<String, String> keyValue;
private Map<String, String> valueKey;

public BiDiMap() {
this.keyValue = new HashMap<>();
this.valueKey = new HashMap<>();
}

private BiDiMap(Map<String, String> keyValue,
Map<String, String> valueKey) {
this.keyValue = keyValue;
this.valueKey = valueKey;
}

public void put(String key, String value) {
if (this.keyValue.containsKey(key)
|| this.valueKey.containsKey(value)) {
this.remove(key);
this.removeInverse(value);
}
this.keyValue.put(key, value);
this.valueKey.put(value, key);
}

public String get(String key) {
return this.keyValue.get(key);
}

public String getInverse(String value) {
return this.valueKey.get(value);
}

public void remove(String key) {
String value = this.keyValue.remove(key);
this.valueKey.remove(value);
}

public void removeInverse(String value) {
String key = this.valueKey.remove(value);
this.keyValue.remove(key);
}

public int size() {
return this.keyValue.size();
}

public BiDiMap getInverse() {
return new BiDiMap(this.valueKey, this.keyValue);
}
}

最佳答案

答案非常简单:通过在类中引入两个泛型类型(名为 K 和 V),然后大力将所有出现的 String 替换为 K(应使用您的键类型),并且与 V 类似,其中值是必填。

换句话说:声明两个映射时不要使用特定类型,而是在所有地方使用您在类级别添加的新泛型类型。

关于java - 通用 BiDiMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52231758/

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