如何给ArrayList<Integer>对象里面添加字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何给ArrayList<Integer>对象里面添加字符串相关的知识,希望对你有一定的参考价值。
参考技术A 泛型只是给编译器看的,事实上泛型在编译完后就没有了,其本质上添加的任然是Object类型的,所以可以通过反射机制来实现参考代码:
import java.util.ArrayList;
import java.lang.reflect.Method;
public class Demo
public static void main(String[] args) throws Exception
ArrayList<Integer> array = new ArrayList<Integer>();// 创建集合
Class c = array.getClass();// 或者Class c = ArrayList.class;
Method m = c.getDeclaredMethod("add", Object.class);// 获取add()方法的字段值
m.invoke(array, "Hello");// 添加Hello字符串
m.invoke(array, "World");// 添加World字符串
System.out.println(array);// 输出array
运行结果:
[Hello, World] 参考技术B ArrayList的泛型E可以使用任何的类的对象。ArrayList是数组类型的容器。泛型是一个检验你自己定义的类的一种机制。还有什么可以在讲的么本回答被提问者采纳
如何将对象类转换为 arrayList ? java [重复]
【中文标题】如何将对象类转换为 arrayList ? java [重复]【英文标题】:How to convert object class to arrayList ? java [duplicate] 【发布时间】:2014-09-23 04:44:59 【问题描述】:我有这个代码:
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
如何将用户作为数组?谢谢
【问题讨论】:
docs.oracle.com/javase/7/docs/api/java/util/List.html#toArray() 1) 将map的值类型改为List
。 2) 用户hashMap.get("users").get(0)
你到底为什么将列表存储为对象???
@Andreas 不,它不是重复的,我想转换特定值
【参考方案1】:
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]);
请注意,这是一个暴行,您不应该将该列表存储为对象,您几乎是在规避泛型的用途。
【讨论】:
同意,但他已经将用户作为变量,我什至不确定他为什么要将它放入地图中并像这样从中取出。或将其存储为对象。真的,我对目的感到困惑,但这应该可行。 @user2864740 '我已经完成了【参考方案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
,因为您默认从HashMap
获得Object
。
【讨论】:
如果它是一个属性包,他应该使用一个类,除非他将它发送到 JavaScript 世界,我怀疑他是。 @user2864740 你提出了一个有效的观点,所以我更新了我的答案,如果这是他的意图,也可以帮助他。【参考方案3】:你可以试试下面的方法
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
【讨论】:
【参考方案4】:因为是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()]);
【讨论】:
以上是关于如何给ArrayList<Integer>对象里面添加字符串的主要内容,如果未能解决你的问题,请参考以下文章
List<List<Integer>> ArrayList 初始化不适用于新运算符 Java
如何在 Java 中制作 ArrayList<Integer> 的深层副本? [复制]
保存并获取 ArrayList<Integer> Android