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