前提・実現したいこと
for文を拡張for文へと書き換えたいです。
int len = foo.length;
hoge = new bar[len];
for(int i = 0; i < len ; i++){
hoge[i] = new bar(name[i],age[i],weight[i]);
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/03 10:16
回答2件
0
従来の for の書き換え法としては、 拡張for だけでなく、 Stream を使う案もあります。
java
1package teratail; 2 3import java.util.stream.IntStream; 4 5public class TestTera { 6 public static void main(String[] args) { 7 8 String name[] = { "a", "b" }; 9 int age[] = { 20, 21 }; 10 double weight[] = { 50.5, 62.5 }; 11 12 for (int i : IntStream.range(0, name.length).toArray()) { 13 System.out.println("" + i + ": " + name[i] + ", " + age[i] + ", " + weight[i]); 14 } 15 System.out.println(); 16 17 IntStream.range(0, name.length) 18 .forEach(i -> System.out.println("" + i + ": " + name[i] + ", " + age[i] + ", " + weight[i])); 19 } 20}
拡張for をつかうなら
[
(name[0], age[0], weight[0)),
(name[1], age[1], weight[1)),
...
]
のような list を作り、 for( elem : list){ ... } みたいにするのが自然ですね。
下の参考情報には このような list をつくるような zip メソッドについての記載があります。
参考情報
- 従来の for ループに代わる関数型の手法
https://www.ibm.com/developerworks/jp/java/library/j-java8idioms3/index.html
- Zipping Collections in Java
https://www.baeldung.com/java-collections-zip
- Java8 Stream APIの基本(5) - zip の実装
http://enterprisegeeks.hatenablog.com/entry/2014/05/19/100422
- 2つの配列の同インデックス要素を演算する for ループの Stream への書き直し方
投稿2018/11/03 12:30
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/11/03 13:06
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。