2016-04-14 8 views
0

もともと私が使用している配列リスト:arraylistとしてJavabeansのコレクションを反復する?このような

ArrayList<JavaBean> AllBeans = new ArrayList<JavaBean>(); 

そして、私はそれを反復処理し、それはこのように私の豆のすべてを印刷するために得ることができるよ:

for (int i=0;i<AllBeans.size();i++){ 
      System.out.println(AllBeans.get(i).getCost()); 
     } 

しかし、私は見つけましたso I read on stackoverflow, and I apparently need to user an iterator、.getCost()

Collection<JavaBean> AllBeans = new ArrayList<JavaBean>(); 

をしかし、私はそれを行う場合、私はもはやAllBeans.get(i)を行うことができます:私はこれを実行する必要があります。しかし、私は何をやっているのか理解していません。私は元のbeanクラスを使用できるようにしたいですが、私はそれらにアクセスできませんか?私は自分のbeanオブジェクトからbean.getCost()を使いたいだけです。私は得ることができる

唯一のことは、私のすべてのオブジェクトを取得していません

Iterator itr = new AllBeans.Iterator(); 
     while (itr.hasNext()){ 
      System.out.println(itr.next().toString()) 
     } 

でしたか?私はまだJavaで抽象的なインターフェイスを理解するのに困っている。

+0

'woz'とは何ですか?なぜあなたは新しい 'woz'の反復子が空以外の何かになると期待していますか? –

+0

あなたの文章は私の一日でした:しかし、私は何をしているのか分かりません: – Patrick

+1

'Iterator itr = AllBeans.Iterator();'。 –

答えて

1

かもしれ返されたオブジェクトをキャストする必要があります。itr.next();

Iterator it = AllBeans.iterator(); 
while (it.hasNext()) { 
    JavaBean bean = (JavaBean)it.next(); 
    System.out.println(bean.getCost()); 
} 
1
Collection<JavaBean> AllBeans = new ArrayList<JavaBean>(); 
AllBeans.get(i).getCost(); 

AllBeansgetメソッドを持っていないタイプCollectionの変数であるので、それは働いていませんでした。 ListがありながらCollectionは索引を持たないので、あなたはこれを行う必要https://docs.oracle.com/javase/7/docs/api/java/util/Collection.html

1

java.util.Collection:あなたは

List<JavaBean> AllBeans = new ArrayList<JavaBean>(); 
AllBeans.get(i).getCost(); 

参照を使用することができます。もっと簡単な方法は、(別名ため-eachループ)拡張forループ

for (JavaBean bean : AllBeans){ 
    System.out.println(bean.getCost()); 
} 
1

使用foreach JAVA文

を使用することです

Iterator<JavaBean> itr = AllBeans.iterator(); 
while (itr.hasNext()){ 
    System.out.println(itr.next().getCost()); 
} 

:あなたはこのようにそれを使用できるようにIteratorも汎用的です

List<JavaBean> allBeans = new ArrayList<JavaBean>(); 
... 
for (JavaBean bean: allBeans) { 
    System.out.println(bean.getCost()); 
} 

Java識別規則も使用してください。最初の識別文字には大文字を使用しないでください。慣習としてCamelCaseを使用してください。

あなたはのJava 8 を使用する場合は文がさらに簡単、あなたはその後、ちょうどIterator itr代わりIterator<JavaBean> itrのを使用する場合は、あなたのオブジェクト

Collection<JavaBean> AllBeans = new ArrayList<JavaBean>(); 
Iterator<JavaBean> itr = AllBeans.iterator(); 
while (itr.hasNext()) { 
    System.out.println(itr.next().getCost()); 
} 

を得ることができますイテレータを使用しflexible

... 
allBeans.stream() 
    .map(bean -> bean.getCost()) 
    .forEach(System.out::println) 
... 
関連する問題