Java - 使用键/值对制作对象?

时间:2011-08-05 19:17:39

标签: java arrays string list

我想制作以下类型的对象。这是我想要在Java中找到的更高层次的愿望:

ListObject(key,String):每个键对应一个String值; key是一个字符串本身

ListObject(key,String []):每个键对应一个字符串数组; key是一个字符串本身

ListObject(key,String,String []):相同的交易,但每个键有两个值字段。

我如何制作(和使用!)此类型的对象?

感谢。

5 个答案:

答案 0 :(得分:16)

您似乎需要一些Map而非List s。检查the Javadoc是否有Map实现;最常见的是HashMap,但也有可用的排序,并发,确定性可迭代实现等。

  

ListObject:每个键对应一个String值; key是一个字符串本身

Map<String, String>
  

ListObject:每个键对应一个字符串数组; key是一个字符串本身

Map<String, String[]>

(或者最好是Map<String, List<String>>

  

ListObject:相同的交易,但每个键有两个值字段。

Map<String, UserDefinedClassWithTwoFields>

答案 1 :(得分:4)

HashMap<KeyType, ValueType>TreeMap<KeyType, ValueType>实现的

Map<KeyType,ValueType>等等 - HashMap是无序的,TreeMap是有序的。

其他有用的地图是LinkedHashMap,类似于HashMap但按插入顺序迭代,而{4}}在Guava中有一堆实用工具方法,com.google.common.collect.Mapscom.google.common.collect.ImmutableMap一个不可变的地图实现。

对于与字符串数组相对应的键,您可能需要查看Multimap,这是一个具有给定键的多个值的映射。

答案 2 :(得分:2)

您可以使用Map来实现此目的。 Map的一般语法是:

Map<String, SomeObject> = new HashMap<String, SomeObject>();

现在java中有四种地图:

哈希地图 - 在迭代地图时,如果不关心元素的显示顺序,请使用此地图。

HASH TABLE - 哈希映射的同步版本。

LINKED HASH MAP - 在关注广告订单时使用此功能。

TREE MAP - 如果需要自定义排序顺序,请使用此选项。

答案 3 :(得分:1)

Map用于在Java中创建关联数组。

映射您的第一个示例。每个String键都与String值相关联。

映射您的第二个示例。值是String的数组。

对于上一个示例,您必须创建自己的类,其中包含两个字段:一个是String,另一个是String []。然后,创建一个将String与您的类型对象相关联的映射。

答案 4 :(得分:0)

Java的Map类型最有可能成功。 Map<KeyType, ValueType>存储键值对,因此您将拥有Map<String, String>Map<String, List<String>>Map<String, SomePairType>

Map只是一个界面:你必须选择一个实现。 HashMapTreeMap是您最好的选择。两者都很好,但TreeMap只适用于类似的密钥类型。 对于键,由于String与其他字符串相当,因此您可以使用地图实现。