java map 多个值,Java Hash Multi Map(具有多个值的键)实现

From here, I found that Colt's OpenIntIntHashMap and Trove's TIntIntHashMap give better performance and memory uses than Java's built in HashMap or Guava's HashMultimap.

Do Colt's OpenIntIntHashMap or Trove's TIntIntHashMap allow keys with multiple values, as with HashMultimap? If not what is a nice way to implement a HashMultimap that can achieve Colt's or Trove's performance and memory efficiency?

Note: I have tested Guava's HashMultimap, but its performance and memory efficiency seems poor to me.

解决方案

Multimaps.newSetMultimap(

TDecorators.wrap(new TIntObjectHashMap>()),

new Supplier>() {

public Set get() {

return TDecorators.wrap(new TIntHashSet());

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果 `Map` 的需要使用多个顺序进行哈希,则可以考虑使用自定义的类作为,并重写该类的 `hashCode()` 和 `equals()` 方法。 具体来说,我们可以定义一个包含多个顺序的类 `MyKey`,并在其中实现 `hashCode()` 和 `equals()` 方法。以下是一个简单示例: ```java import java.util.Objects; public class MyKey { private int value1; private int value2; private int value3; public MyKey(int value1, int value2, int value3) { this.value1 = value1; this.value2 = value2; this.value3 = value3; } @Override public int hashCode() { // 使用多个顺序进行哈希 return Objects.hash(value1, value2, value3); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } MyKey myKey = (MyKey) obj; // 判断多个顺序是否相等 return value1 == myKey.value1 && value2 == myKey.value2 && value3 == myKey.value3; } } ``` 然后我们可以将 `MyKey` 对象作为 `Map` 的进行操作。以下是一个简单示例: ```java import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<MyKey, String> map = new HashMap<>(); MyKey key1 = new MyKey(1, 2, 3); MyKey key2 = new MyKey(4, 5, 6); map.put(key1, "value1"); map.put(key2, "value2"); System.out.println(map.get(key1)); // 输出 "value1" System.out.println(map.get(key2)); // 输出 "value2" } } ``` 输出结果为: ``` value1 value2 ``` 这样就可以使用多个顺序进行哈希,并将自定义的类作为 `Map` 的进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值