我有一个对象
的ArrayList
。我已将一些对象和 String
的 ArrayList
添加到此 ArrayList
。我可以轻松地从中获取对象值。现在我的问题是如何从中获取 String
的整个 ArrayList
?
代码 fragment :
Person.java
public class Person {
private String name;
private int number;
public Learn(String name, int number) {
this.name = name;
this.number= number;
}
public String getName() {
return name;
}
public int getNumber() {
return number;
}
}
现在我已经定义了对象列表
List<Object> itemsList = new ArrayList<>();
现在是时候在 itemsList 中添加一些Person
public void addPerson(){
itemsList.add(new Person("Alex", 0000062846));
itemsList.add(new Person("Jack", 0000131332));
itemsList.add(new Person("Anjela", 0000053715));
itemsList.add(new Person("Brian", 0000085015));
}
现在,我将在索引 2 处添加一个 String List
public void addList(){
List<String> strList = new ArrayList<>();
strList.add("Hello");
strList.add("How");
strList.add("are");
strList.add("you?");
itemsList.add(2, strList);
}
好的,是时候从 itemsList
中获取值了
Person person = (Person) itemsList.get(0);
System.out.println(person.getName); // Alex
现在我的问题是:如何从 itemsList
获取 strList
?
最佳答案
使用 instanceof
为此,使用 instanceof
找到 Object
输入 List<Object>
for(Object obj : itemsList) {
if(obj instanceof List) { //if it is List type then type cast it
List<String> str = (List<String>) obj;
for(String s : str) {
System.out.println(s);
}
}
}
但是根据评论中的讨论,假设你有 List<String>
和 List<Integers>
在List<Object> itemsList
然后 while 在类型转换时将抛出异常,因为在运行时 List<String>
和 List<Integers>
两者都被视为 `List
List<String> str = (List<String>) obj; //exception thrown at this line
看看Type Erasure , 所以对每种类型使用通用列表而不是 `List to add different types
关于java - 如何从 Java 中的对象 ArrayList 获取 ArrayList 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55122302/