在 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&lt;Object&gt;Set&lt;Object&gt; 将更好地用作地图中的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 中存储三个属性条目集的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Subversion 回滚更改集的最佳方法是啥?

在java中存储sql查询的最佳方法是啥

使用 C# 和 SQL 解决 datagridview 中重复条目的最佳方法是啥?

将Java应用程序数据冗余存储在文件中的最佳方法是啥?

通过 NHibernate 检索/保存链接到其他实体的日志条目的最佳方法是啥?

从时间戳图像对创建 HDF5 数据集的最佳方法是啥?