我想制作以下类型的对象。这是我想要在Java中找到的更高层次的愿望:
ListObject(key,String):每个键对应一个String值; key是一个字符串本身
ListObject(key,String []):每个键对应一个字符串数组; key是一个字符串本身
ListObject(key,String,String []):相同的交易,但每个键有两个值字段。
我如何制作(和使用!)此类型的对象?
感谢。
答案 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.Maps
是com.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
只是一个界面:你必须选择一个实现。 HashMap
和TreeMap
是您最好的选择。两者都很好,但TreeMap
只适用于类似的密钥类型。
对于键,由于String
与其他字符串相当,因此您可以使用地图实现。