Java 如何在类似映射的结构中复制值并以简单的方式获取所有键
我正在寻找一种方法来获取一个映射的键,该映射只包含一对值的列表(或重复的键,它是我的同义词)作为一个数组。我发现自己正在生成这种实现:Java 如何在类似映射的结构中复制值并以简单的方式获取所有键,java,collections,shared-libraries,key-value,Java,Collections,Shared Libraries,Key Value,我正在寻找一种方法来获取一个映射的键,该映射只包含一对值的列表(或重复的键,它是我的同义词)作为一个数组。我发现自己正在生成这种实现: public static Integer[] pairOfValues(){ class MyMap<T,E> extends ArrayList<AbstractMap.SimpleEntry<T,E>>{ public ArrayList<T> keys(){
public static Integer[] pairOfValues(){
class MyMap<T,E> extends ArrayList<AbstractMap.SimpleEntry<T,E>>{
public ArrayList<T> keys(){
try {
ArrayList<T> keys=new ArrayList<>();
this.forEach(entry -> { keys.add(entry.getKey()); });
return keys;
} catch (Exception e) {
throw new RuntimeException("Impossible to obtain keys from the ArrayList",e);
}
}
}
MyMap<Integer,String> myMap=new MyMap<>(){{
add(new AbstractMap.SimpleEntry(1,"a"));
add(new AbstractMap.SimpleEntry(1,"x"));
add(new AbstractMap.SimpleEntry(2,"b"));
add(new AbstractMap.SimpleEntry(2,"a"));
}};
ArrayList<Integer> onlyKeys=myMap.keys();
Integer[] requiredArray=onlyKeys.toArray(new Integer[onlyKeys.size()]);
return requiredArray;
}
public静态整数[]pairOfValues(){
类MyMap Extendes ArrayList具有该方法,尽管在自定义实现的情况下,我不会将键作为一个集合获取,而是作为一个列表或其他允许重复数据的集合获取
总之:
它应该能够有重复的值
我应该能够在实例中调用方法并获取所有键值(包括重复的键值)
它必须易于调用/使用
我确信应该有一个已经完成的库(我不知道为什么Java中还没有),它将帮助我完成同样的任务,而无需在每次需要一对值时创建此类类
我在网上查找,发现了这个库,在这里可以调用方法keys().iterator(),它只返回键,但作为迭代器而不是普通的集合,我需要一个for(我从一开始就一直在寻找避免)来复制值
这里的任何人都知道一个库或一些可以帮助我们解决此类常见问题/解决方案的东西。您可以使用一些类来实现这一点,这些类将作为的扩展。我特别建议,如果您正在查找地图上的所有键,您可以拨打电话方法keys()
,这是一个数组,您可以使用正在使用的相同方法将其转换为数组
您将从正在使用的示例中获得的代码将如下所示:
public static Integer[] pairOfValues(){
com.google.common.collect.Multimap<Integer,String> myMap=LinkedHashMultimap.create();
myMap.put(1,"a");
myMap.put(1,"x");
myMap.put(2,"b");
myMap.put(2,"a");
Multiset<Integer> onlyKeys=myMap.keys();
Integer[] requiredArray=onlyKeys.toArray(new Integer[onlyKeys.size()]);
return requiredArray;
}
public静态整数[]pairOfValues(){
com.google.common.collect.Multimap myMap=LinkedHashMultimap.create();
myMap.put(1,“a”);
myMap.put(1,“x”);
myMap.put(2,“b”);
myMap.put(2,“a”);
Multiset onlyKeys=myMap.keys();
整数[]requiredArray=onlyKeys.toArray(新整数[onlyKeys.size()]);
返回所需数组;
}
您能详细说明一下您要做什么吗?首先,您没有使用或创建映射
。您有一个数组列表
,可以将元组(键值对)放入其中您碰巧从AbstractMap.SimpleEntry
借用了谁的实现。很难说您想做什么,但我认为您需要一个“多映射”数据结构,它允许每个键有多个值,比如map
。请澄清您的最终目标。对不起(我认为代码足够清楚:P)我更新了描述,使它更清晰。结构1)应该能够有重复的值2)我应该能够在实例中调用方法并获取所有键值(包括重复的键值)3)我不需要迭代条目来手动提取键值(并遵循这一精神)。