我有这段代码:
ArrayList<Integer> users = new ArrayList<Integer>();
Map <String,Object> hashMap = new HashMap <String,Object> ();
hashMap.put("users",user);
// now I want to get users as array list
hashMap.get("users")[i];//error
如何将用户作为数组?谢谢
答案 0 :(得分:3)
List<Integer> users = new ArrayList<Integer>();
Map<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put("users",user);
....
....
....
List<Integer> users = (List<Integer>)hashMap.get("users"); //assuming this is another method and 'users' is not defined here yet
Integer[] usersArray = users.toArray(new Integer[users.size()]);
System.out.println("" + usersArray[i]);
请注意,这是一个暴行,你不应该将该列表存储为一个对象,你几乎可以避开泛型的用途。
答案 1 :(得分:2)
如果您想以ArrayList:
的形式访问它,此代码将起作用List<Integer> users = new ArrayList<Integer>();
Map<String, List<Integer>> hashMap = new HashMap<String, List<Integer>> ();
hashMap.put("users",users);
hashMap.get("users");
由于您将代码存储为对象,因此代码无效。所以你需要演员。即便如此,您还是使用[]
表示数组,而不是ArrayLists
如果要将其用作数组,可以将最后一行更改为:
hashMap.get("users").toArray()
然后你可以使用[1]
,或者只对初始代码执行.get(1)。
或者,如果您想将hashMap用作有效提及的人的属性包,则需要进行强制转换:
((ArrayList<Integer>) hashMap.get("users"))
然后,您可以将用户用作ArrayList
,因为您Object
默认获得HashMap
。
答案 2 :(得分:1)
因为它是ArrayList
而不是数组,你可以这样得到它 -
public static void main(String args[]) throws Exception
{
ArrayList<Integer> users = new ArrayList<Integer>();
users.add(5);
users.add(10);
Map <String,Object> hashMap = new HashMap <String,Object> ();
hashMap.put("users",users);
ArrayList<Integer> no = ((ArrayList<Integer>) hashMap.get("users"));
for (Integer integer : no) {
System.out.println(integer);
}
}
输出 -
5
10
现在将ArrayList转换为Array -
Integer[] arr = no.toArray(new Integer[no.size()]);
答案 3 :(得分:1)
您可以尝试以下内容
List<Users> usersList = new ArrayList<>();
Map<String,List<Users>> hashMap = new HashMap <> ();
hashMap.put("user",usersList);
现在
hashMap.get("user")
将返回List
Users
,现在您可以使用
hashMap.get("user").get(0); // to get 0th index user