在 Java 中存储三个属性条目集的最佳方法是啥?
Posted
技术标签:
【中文标题】在 Java 中存储三个属性条目集的最佳方法是啥?【英文标题】:What is the best way to store three attributes entry sets in Java?在 Java 中存储三个属性条目集的最佳方法是什么? 【发布时间】:2010-04-29 01:20:32 【问题描述】:HashMaps 允许映射键值对;如果有额外的价值,建议是什么?
即HashMap映射键值对:Key,Value
最好的映射方式是什么:Key、Value、Value1?
谢谢。
【问题讨论】:
【参考方案1】:我喜欢的一个不错的、干净的解决方案是编写一个与一对匹配的实用程序类:
public class Pair<U, V>
private U first;
private V second;
public Pair(U first, V second)
this.first = first;
this.second = second;
// getters for "first" and "second"
然后将其设为地图中的Value
:
Map<Key, Pair<U,V>> map;
但是,在这种情况下,您总是只有两个值。如果您觉得未来可能会有更多,List<Object>
或 Set<Object>
将更好地用作地图中的Value
。
编辑你也可以有一个静态的创建者方法:
public static <U, V> Pair<U, V> newInstance(U first, V second)
return new Pair<U, V>(first, second);
【讨论】:
【参考方案2】:标准的解决方案是将这两个值封装在各自的数据结构中。
数据结构可以针对您的具体情况,或者您可以组合一个简单的Pair
类。
然后,您将使用该结构的一个实例作为您的列表值,例如map.put(key, new Pair(foo, bar));
还可以选择使用专门的 Map
实现,例如http://commons.apache.org/collections/api-3.1/org/apache/commons/collections/MultiMap.html
【讨论】:
【参考方案3】:你可以:
使用列表作为值
Map<String,List<String>> map = new HashMap<String,List<String>>();
map.put("key",Arrays.asList("one","two" );
map.get("key").get(0);
map.get("key").get(1);
使用数组作为值并引用为
Map<String,String[]> map = new HashMap<String,String[]>();
map.put( "key", new String[]"one", "two");
map.get("key")[0];
map.get("key")[1];
使用自定义泛型类来保存两个值
Map<String,Pair> map = new HashMap<String,Pair>();
map.put( "key", new Pair<String,String>("one","two"));
map.get("key").val1();
map.get("key").val2();
【讨论】:
【参考方案4】:你可以使用 Map >
public class MyVOClazz
private String value1;
private String value2;
//getters, setters for value1 and value2
【讨论】:
以上是关于在 Java 中存储三个属性条目集的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用 C# 和 SQL 解决 datagridview 中重复条目的最佳方法是啥?