得到数组列表元素的java的特定值

问题描述:

我有它具有特定数量的元件的ArrayList,每个由两个值(天,分) company.getAnnouncements().get(0)得到数组列表元素的java的特定值

的上面的代码将在数组列表中检索所述第一元件,但我只想要那个元素的美分。 你会怎么做?

public class Announcement implements Event { 
private int day ; 
private String statement; 
    public Announcement(int day, String statement) { 
      this.day = day; 
      this.statement = statement; 
    } 

    @Override 
    public String printEvent() { 

     return statement; 
    } 

    public int getDay() { 
     // TODO Auto-generated method stub 
     return day; 
    } 


} 

这是公告类,我有和股息扩展它

public class Dividend extends Announcement { 

    private int cents; 

     public Dividend(int day, int cents) { 
      super(day,""); 
      this.cents=cents;  

     } 


     public double getCents() { 
     return (double) (cents)/100; 
     } 

     public void setCents(int cents) { 
      this.cents = cents; 
     } 


     @Override 
     public String printEvent() { 
      // TODO Auto-generated method stub 
      return "Dividend of " + getCents() + " per share" ; 
     } 

    }` 

而公司类

public class Company implements Event { 

private String name; 
private String code; 
private int currShares; 
private double previousPrice; 
private ArrayList <Dividend> dividends; 
private ArrayList <Announcement> announcements; 
private ArrayList <Trade> trades; 

public Company(String code, String name, int currShares, 
     double previousPrice) { 
    this.name = name; 
    this.code = code; 
    this.setCurrShares(currShares); 
    this.previousPrice = previousPrice; 
    this.trades = new ArrayList <Trade>(); 
    this.dividends = new ArrayList <Dividend>(); 
    this.announcements = new ArrayList <Announcement>(); 
} 

public void addDividend(int day , int cents){ 
    dividends.add(new Dividend(day, cents)); 

} 

public void addAnnouncement(int day , String statement){ 
    announcements.add(new Announcement(day, statement)); 

} 

public void addTrade(int day , int sharesTraded , double pricePerShare){ 
    trades.add(new Trade(day, sharesTraded, pricePerShare)); 

} 


public String printEvent() { 

    return "Printed!!"; 
} 

public String getCode() { 
    return code; 
} 

public ArrayList<Dividend> getDividends() { 
    return dividends; 
} 

public void setDividends(ArrayList<Dividend> dividends) { 
    this.dividends = dividends; 
} 

public ArrayList<Announcement> getAnnouncements() { 
    return announcements; 
} 

public void setAnnouncements(ArrayList<Announcement> announcements) { 
    this.announcements = announcements; 
} 

public ArrayList<Trade> getTrades() { 
    return trades; 
} 

public void setTrades(ArrayList<Trade> trades) { 
    this.trades = trades; 
} 

public String getName() { 
    return name; 
} 


public void addAnnouncement(int day, int cent) { 
    // TODO Auto-generated method stub 
    announcements.add(new Dividend(day,cent)); 
} 

public int getCurrShares() { 
    return currShares; 
} 

public void setCurrShares(int currShares) { 
    this.currShares = currShares; 
} 


} 
+2

根据您提供的内容,我会通过一组复杂的反射和概率性字段名称匹配来实现这一点。但是,如果你能告诉我们你究竟从列表中得到了什么,它会更容易? –

+0

有没有办法可以为我的问题添加更多信息? – MrKeyboard

+0

我需要检索关于扩展“公告”类的“股息”类的信息。股息类具有日和美分作为其属性并延伸了具有日和语句作为属性的公告类。 – MrKeyboard

刚访问它,你会与任何其他的吸气剂(这是假设,AnnouncementgetCents方法):

int cents = company.getAnnouncements().get(0).getCents(); 

或者,如果你没有一个getCents方法(其中,顺便说一句,你应该!):

int cents = company.getAnnouncements().get(0).cents; 

我认为intcents类型,你必须向我们提供什么Announcement外观喜欢说清楚,你将如何访问它。

更新

您的编辑之后,它似乎如果你不想getAnnouncements而是getDividends做。这看起来有点像这样:

double cents = company.getDividends().get(0).getCents(); 
+0

Thankyou,如果你喜欢看一下,我添加了更多的代码。 – MrKeyboard

+0

@ 30088121看起来'公司'没有'getAnnouncements'方法。即使这样做了,如果这似乎是你想要的,为什么不从公司发布公告而不是股息呢? – germi

+0

嘿@germi对不起伙伴,我没有添加整个公司类,因为它的任务和我的老师wouldnt真的很感激我有整个任务:/ – MrKeyboard

我相信company.getAnnouncements()回报你的list,并通过company.getAnnouncements().get(0)你到bean对象。

有必须一getCents()或东西在bean类,你最终的代码看起来应该像company.getAnnouncements().get(0).getCents()

,或者如果cents是在bean类的属性时,你也可以做company.getAnnouncements().get(0).cent

+0

Thankyou,我添加了更多的代码如果你喜欢看一看。 – MrKeyboard

您需要知道值对象的类型以便知道如何访问它。

如果它的另一个数组列表,你会怎么做:

INT美分= company.getAnnouncements()得到(0)获得(1);

+0

Thankyou,如果你喜欢看看,我增加了更多的代码。 – MrKeyboard