Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何初始化两列arraylist?_Java_Android_Arraylist - Fatal编程技术网

Java 如何初始化两列arraylist?

Java 如何初始化两列arraylist?,java,android,arraylist,Java,Android,Arraylist,我需要创建一个记录两列{int,String}的列表。我想ArrayList是我所需要的,但我无法理解它。我从数据库中提取了字符串,int是索引值,我需要在以后识别字符串的位置 List strArray=ArrayList 然后,我可以对从数据库中提取的每一行执行类似strArray.add().add()的操作吗?我想您可以将int和string包装在一个类中,然后将类对象放入列表中 映射是将关键点映射到值的对象。地图不能包含重复的键;每个键最多可以映射到一个值 我认为最好使用Map其中键(

我需要创建一个记录两列{int,String}的列表。我想ArrayList是我所需要的,但我无法理解它。我从数据库中提取了字符串,int是索引值,我需要在以后识别字符串的位置

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");