簡體   English   中英

如何從java中的Object ArrayList獲取ArrayList值?

[英]How to get ArrayList value from a Object ArrayList in java?

我有一個ObjectArrayList 我添加了一些對象和ArrayListString s到該ArrayList 我可以輕松地從中獲取對象值。 現在我的問題是如何從中獲取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處添加一個字符串列表

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

現在的問題是:我怎樣才能strListitemsList

使用instanceof ,通過使用instanceofList<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> itemsListList<String>List<Integers> ,那么在類型轉換時將拋出異常,因為在運行時List<String>List<Integers>都被視為`List

List<String> str = (List<String>) obj;    //exception thrown at this line

看一下Type Erasure ,所以使用每種類型的通用列表而不是`List來添加不同的類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM