Java 可变长度泛型类型

Java 可变长度泛型类型,java,generics,Java,Generics,我想做这样的事情,有人做过类似的事情吗? 我有一个解决方案地图,有两个键,我使用它进行地理定位,但我想用n个键来代替 import java.util.Collection; import java.util.Set; public interface NKeyMap<K..., V> { public void clear(); public boolean containsKey(K...); public boolean containsValue(V

我想做这样的事情,有人做过类似的事情吗? 我有一个解决方案地图,有两个键,我使用它进行地理定位,但我想用n个键来代替

import java.util.Collection;
import java.util.Set;

public interface NKeyMap<K..., V> {
    public void clear();
    public boolean containsKey(K...);
    public boolean containsValue(V value);
    public V get(K...);
    public boolean isEmpty();
    public V put(K..., V value);
    public V removeK..., V value);
    public int size();
    public Collection<V> values();
    public Set<K...> keys();
}
import java.util.Collection;
导入java.util.Set;
公共接口NKeyMap{
公共空间清除();
公共布尔containsKey(K…);
公共布尔包含值(V值);
公共V get(K…);
公共布尔值为空();
公共V值(K…,V值);
公共V移除…,V值);
公共整数大小();
公共集合值();
公共设置密钥();
}

如果您需要可变长度的键,可以使用或类似的方法来包装任意数量和任意类型的参数(它们提供长度为10的元组):

Map-mapWithCombinedKeys=…

看看这个人试图通过链接
pair

他这样做

Pair<String, Integer> pair = Pairs.pair("hello", 5);
Pair<Double, Pair<String, Integer>> withDouble = Pairs.pair(3.0, pair);

您不能执行var arg generic,但可以执行如下操作

import java.util.Collection;
import java.util.Set;

public interface NKeyMap<K, V> {
    public void clear();
    public boolean containsKey(K... k );
    public boolean containsValue(V value);
    public V get(K... k);
    public boolean isEmpty();
    public V put(V value, K...k);
    public V remove(V value, K... k);
    public int size();
    public Collection<V> values();
    public Set<K> keys();
}
import java.util.Collection;
导入java.util.Set;
公共接口NKeyMap{
公共空间清除();
公共布尔containsKey(K…K);
公共布尔包含值(V值);
公共V-get(K…K);
公共布尔值为空();
公共V投入(V值,K…K);
公共V移除(V值,K…K);
公共整数大小();
公共集合值();
公共设置密钥();
}

说吧,有什么问题?你有什么问题?不可能像你发布的那样。你到底有什么打算?阅读你的编辑;您可能希望为键创建
Tupel
Tripel
等(可以看看提供这一功能的javatupes)。问题是它不起作用;)我在我的原始帖子中添加了一些评论,我认为这是有意义的,我想要一张n个键的地图。一个映射将包含一个键和一个值。我有一个解决方案,其中我有两个键和一个值,这适用于地理定位。现在我想用n个键。主要是为了使这两个关键的解决方案更容易,我想支持一个更三维的地理定位我会看看它,你不能像接口NkeMap那样写,你需要像接口NkeMap那样写。这两个都不起作用,因为我需要K是任意类型,K。。。可以是长的,字符串,类等在同一时间。在我有两个定义键的场景中,我可以将一个设置为Long,一个设置为String。。。在方法将起作用时,问题在于接口。剩下的问题是,使K可以是不同的types@Karthik另一个没问题,它们不会产生编译错误,因为它们是在method.added代码到我的github,所以任何人都可以看到我做了什么,剩下的唯一一件事就是看看我是否可以得到不同类型的键
Pair<Double, Pair<String, Integer>> pair = Pairs.pair("hello", 5).prepend(3.0);
Map<XKey, Map<YKey, Value> >
import java.util.Collection;
import java.util.Set;

public interface NKeyMap<K, V> {
    public void clear();
    public boolean containsKey(K... k );
    public boolean containsValue(V value);
    public V get(K... k);
    public boolean isEmpty();
    public V put(V value, K...k);
    public V remove(V value, K... k);
    public int size();
    public Collection<V> values();
    public Set<K> keys();
}