在Java中基于一组键将占位符放入键/值列表

在Java中基于一组键将占位符放入键/值列表,java,collections,Java,Collections,我有一组键和一个键/值对列表。这些值的形式为Long,BigInteger // key/values pairs: Long,BigInteger List<Object[]> values; // id list that corresponds to the keys for the list above Set<Long> ids; //键/值对:长、大整数 列表值; //与上面列表的键对应的id列表 设置ID; 如果键集的任何成员在键/值列表中不作为键存在,

我有一组键和一个键/值对列表。这些值的形式为Long,BigInteger

// key/values pairs: Long,BigInteger
List<Object[]> values;
// id list that corresponds to the keys for the list above
Set<Long> ids;
//键/值对:长、大整数
列表值;
//与上面列表的键对应的id列表
设置ID;
如果键集的任何成员在键/值列表中不作为键存在,我希望将其添加到值为0的列表中


用Java做这件事的好方法是什么?

我想您应该使用类似于其中一个实现的东西。不要再发明轮子了。我怀疑Apache Commons也有类似的功能,但我更喜欢Google库

查询没有值的键将返回空集合


编辑:排序顺序、唯一性等选项都可用,只需根据您的要求选择正确的实现。

各种建议地图的评论者提出了一个很好的观点。代替我怎么样

List<Object[]> values 

事实上,即使代码必须像写的那样保存,我也会考虑使用一个映射来操作,通过将列表预处理到一个映射中,然后将其倒入对象数组的列表中。 用Java做这件事的好方法是什么

集合
列表
替换为
映射
。如果订购不重要,则使用。如果您想自动按键排序,请使用。如果要保持插入顺序,请使用

例如

您甚至可以通过以下方式获取所有密钥:

Set keys=map.keySet();

要了解更多有关地图的信息,请咨询相关主题。

这里是否有一些奇怪的要求,或者您是否可以使用
地图
?为什么对键值对使用列表而不是地图?mmyers/MAK:顺序很重要?嗯,我们真的不知道这些要求,所以猜测是最好的方法。:)出于类型安全原因,我建议使用
List
而不是
List
Map<Long, BigInteger> values
for(Long id : ids) {
    if(!values.containsKey(id)) {
        values.put(id, BigInteger.ZERO);
    }
}
Map<Long, BigInteger> unorderedMap = new HashMap<Long, BigInteger>();
Map<Long, BigInteger> orderedByKeys = new TreeMap<Long, BigInteger>();
Map<Long, BigInteger> orderedByInsertion = new LinkedHashMap<Long, BigInteger>();
Long key = 1L;
BigInteger value = map.get(key);
if (value == null) {
    value = new BigInteger(0);
    map.put(key, value);
}
Set<Long> keys = map.keySet();