Java 如何初始化两列arraylist?
我需要创建一个记录两列{int,String}的列表。我想ArrayList是我所需要的,但我无法理解它。我从数据库中提取了字符串,int是索引值,我需要在以后识别字符串的位置Java 如何初始化两列arraylist?,java,android,arraylist,Java,Android,Arraylist,我需要创建一个记录两列{int,String}的列表。我想ArrayList是我所需要的,但我无法理解它。我从数据库中提取了字符串,int是索引值,我需要在以后识别字符串的位置 List strArray=ArrayList 然后,我可以对从数据库中提取的每一行执行类似strArray.add().add()的操作吗?我想您可以将int和string包装在一个类中,然后将类对象放入列表中 映射是将关键点映射到值的对象。地图不能包含重复的键;每个键最多可以映射到一个值 我认为最好使用Map其中键(
List strArray=ArrayList代码>
然后,我可以对从数据库中提取的每一行执行类似strArray.add().add()的操作吗?我想您可以将int和string包装在一个类中,然后将类对象放入列表中
映射是将关键点映射到值的对象。地图不能包含重复的键;每个键最多可以映射到一个值
我认为最好使用Map
其中键(整数)
将是指向字符串
值的索引
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(1,"str1");
map.put(2,"str2");
...
Map Map=newhashmap();
map.put(1,“str1”);
图.put(2,“str2”);
...
如果int
值是唯一的,我认为应该使用HashMap
,将int
作为键,将String
作为值
Map<Integer,String> myMap = new HashMap<Integer,String>();
myMap.put(1,"ABC");
Map myMap=newhashmap();
myMap.put(1,“ABC”);
请注意,由于Map
是一个集合,而java集合不存储像int
这样的基元,它们存储对象,因此您必须为int
值使用Integer
包装类
请参阅此链接,另一种方法是创建自定义对象:
Class CustomObject {
int value1;
String value2;
CustomObject(int v1, String v2) {
value1 = v1;
value2 = v2;
}
}
然后使用它:
List<CustomObject> myList = new ArrayList<CustomObject>();
CustomObject o1 = new CustomObject(1, "one");
myList.add(o1);
// etc.
List myList=new ArrayList();
CustomObject o1=新CustomObject(1,“一”);
添加(o1);
//等等。
如果<代码> int <代码>值是唯一的,并且您想考虑它们的键,那么<>代码> map <代码>将按照其他人的建议工作。
如果您只需要两个值,可以使用本机类
List mPairs=new ArrayList();
Pair Pair=新的一对(123,“您的字符串”);
mPairs.add(成对);
如果您的int值不唯一,因此无法使用HashMap,这将是一个很好的决定如果您的id不唯一,您仍然可以使用Map:
Map<Integer, String> map = new IdentityHashMap<Integer, String>();
map.put(new Integer(1), "string");
Map Map=newidentityhashmap();
put(新整数(1),“字符串”);
IdentityHashMap-对每个对象使用本机hashCode implementation,因此不需要唯一的ID,但必须通过运算符“new”创建所有整数,并且不要使用自动装箱,因为存在一些
还有一个JVM参数,它控制缓存大小'-XX:AutoBoxCacheMax='。
但使用此参数不能禁用缓存,如果将大小设置为零,则缓存将忽略它并使用默认值:[-128;127]。
此参数仅适用于整数,长期没有此类参数
更新
对于非唯一键,也可以使用某种多重映射:
地图>地图
并使用非唯一键将值存储在其中:
map.put(1, new ArrayList<String>());
map.get(1).add("value1");
map.get(1).add("value2");
map.put(1,新的ArrayList());
映射。获取(1)。添加(“值1”);
映射。获取(1)。添加(“值2”);
例如,您可以使用HashMap
您还可以在google collections中找到MultiMap实现:“guava”。如果ID是唯一的,请使用hashmap hashmap,否则请创建一个列表可以容纳的新类。我以前对hashmap不太了解,但我想我会使用它,谢谢!!使用稀疏数组进行整数字符串组合。
map.put(1, new ArrayList<String>());
map.get(1).add("value1");
map.get(1).add("value2");