Java 将元素添加到ArrayList或ArrayAdapter中的特定索引

Java 将元素添加到ArrayList或ArrayAdapter中的特定索引,java,android,arraylist,Java,Android,Arraylist,这个问题可能看起来很愚蠢和/或简单,但我做不到 我正在从数据库(仅)获取数据。我需要同时获取元素及其id。比如说, +----------------+ | id | username | +----------------+ | 1 | user1 | | 12 | user2 | | 103 | user3 | +----------------+ 当我填充ArrayList或ArrayAdapter(或者其他东西)时,我希望同时获得id和用户名 我尝试在Arra

这个问题可能看起来很愚蠢和/或简单,但我做不到

我正在从数据库(仅)获取数据。我需要同时获取
元素
及其
id
。比如说,

+----------------+
|  id | username |
+----------------+
| 1   | user1    |
| 12  | user2    |
| 103 | user3    |
+----------------+
当我填充
ArrayList
ArrayAdapter
(或者其他东西)时,我希望同时获得
id
用户名

我尝试在ArrayList中使用
add(int-index,String-object)
方法,在ArrayAdapter中使用
insert(String-object,int-index)
方法。但这两种方法都返回相同的错误:

java.lang.IndexOutOfBoundsException:索引12无效,大小为1

我怎样才能解决这个问题


谢谢。

您使用了
12
索引,该索引不存在。如果要在末尾添加元素,可以使用以下签名:

objectOfArrayList.add(strigObject); // add an element to end
而且,您必须始终检查阵列的大小:

int index = 16;
if (objectOfArrayList.size() > index) {
    objectOfArrayList.add(index -1, stringObject); // add an element to position
}
已执行向
ArrayList
的对象添加或插入值的检查:


对评论中问题的答复:

LinkedHashMap=新建LinkedHashMap();
地图放置(“用户”,1);
int id=map.get(“用户”);
System.out.println(“id=”+id);//“id=1”

如果键不存在,则在上一个示例中可能会出现
java.lang.NullPointerException

获得
ArrayIndexOutOfBound
异常的原因是首先在索引
1
中插入
1
。 但是直接尝试插入
12
。 但当时列表的大小只有
1

我的建议是,使用
HashMap
。。 您将ID存储为密钥,用户名存储为值,即

Map<String, String> = new HashMap <String, String>();
map.put('1', "name 1");
Map=newhashmap();
地图放置('1','name 1');

你能发布代码吗?我添加了一个答案,还有别的吗?谢谢。但是如果只有3条记录,那么它不会添加元素吗?我试过了,但没有解决我的问题。很抱歉回复晚了…@mirjallatalalishinski,对于使用的这些目标,
map
@AndrewTobilko你的意思是看tsvayer的答案吗?@AndrewTobilko那么,我如何获得特定用户的密钥(id)值?例如,如果我输入了
user2
,我想得到
12
// id - user
LinkedHashMap<Integer, String> map = new LinkedHashMap<>();
map.put(1, "user1");
map.put(12, "user2");
map.put(103, "user3");
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
map.put("user", 1);
int id = map.get("user");
System.out.println("id = " + id); // "id = 1"
Map<String, String> = new HashMap <String, String>();
map.put('1', "name 1");