如何从 java 中的对象 ArrayList 获取 ArrayList 值?
How to get ArrayList value from a Object ArrayList in java?
我有 ArrayList
个 Object
。我向这个 ArrayList
添加了一些对象和一个 ArrayList
of String
s。我可以轻松地从中获取对象值。现在我的问题是如何从中获取 String
的全部 ArrayList
?
代码片段:
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
在 List<Object>
中找到 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<Object> itemsList
中有 List<String>
和 List<Integers>
那么 while 在类型转换时会抛出异常,因为在运行时List<String>
和 List<Integers>
都被视为 `List
List<String> str = (List<String>) obj; //exception thrown at this line
看看 类型擦除
,因此对每种类型使用通用列表而不是 `List 来添加不同的类型
我有 ArrayList
个 Object
。我向这个 ArrayList
添加了一些对象和一个 ArrayList
of String
s。我可以轻松地从中获取对象值。现在我的问题是如何从中获取 String
的全部 ArrayList
?
代码片段:
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
中添加一些 Personpublic 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 Listpublic 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
在 List<Object>
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<Object> itemsList
中有 List<String>
和 List<Integers>
那么 while 在类型转换时会抛出异常,因为在运行时List<String>
和 List<Integers>
都被视为 `List
List<String> str = (List<String>) obj; //exception thrown at this line
看看 类型擦除 ,因此对每种类型使用通用列表而不是 `List 来添加不同的类型