2017-11-02 8 views
0

Listがあり、私はbooksオブジェクトを作成し、このリストにすべてのブックオブジェクトを追加したいと思います。ここで私はこのような通常のアプローチでやった。リストにオブジェクトを追加するLamda式

public static List<Books> listOfBooks = new ArrayList<>(); 
public static void addProduct() { 
     Books book1 = new Books("java", "games", 200.56); 
     Books book2 = new Books("c", "dennis", 300.56); 
     Books book3 = new Books("c++", "Bjarne", 250.56); 
     Books book4 = new Books("javaScript", "Brendan", 209.56); 
     Books book5 = new Books("Sql", "Donald", 249.56); 
     listOfBooks.add(book1); 
     listOfBooks.add(book2); 
     listOfBooks.add(book3); 
     listOfBooks.add(book4); 
     listOfBooks.add(book5); 
    } 

私はlamda式を使用して同じ操作をしたいが、それを行う方法はわからない。私を助けてください?

Arrays.asList(book1, book2, ...).forEach(b -> listOfBooks.add(b)); 

か短い代わりにラムダのメソッド参照を使用して::

+2

ラムダ式は何ですか? – Flown

+0

うん@flown私はラムダの基本を知っていると私はこれらの疑問を学んでいる間。 –

+1

ラムダ式は基本的に単一の抽象メソッドのインターフェイスです。だから、あなたのタスクを実行するために実装するインターフェイスは?または 'Stream' APIを使用しようとしていますか? – Flown

答えて

1

あなたは書くことができ

Arrays.asList(book1, book2, ...).forEach(listOfBooks::add); 

をしかし、それは書くよりも本当に良くありません。

listOfBooks.addAll(Arrays.asList(book1, book2, ...)); 
+0

@ジャノスありがとうが、私はちょうどlamda式を使用してコードのこの部分を書く私がする? –

+0

@chandmohdラムダ式を使うための最初のバリエーションを変更しました。しかし、それはポイントを欠いている。これはlambdaの典型的な使用例ではありません。 – janos

+0

私はポイントを得たが、あなたが言ったように、これは推奨されていません。あなたはパフォーマンスの面で言いましたか?はいの場合、どのメソッドを実行するのにどれくらいの時間がかかるのでしょうか? –

0

Stream APIはラムダexpressioを使用していますn、しかしそれの一部ではありません。

public static List<Books> listOfBooks = new ArrayList<>(); 
public static void addProduct() { 
    String[] languages = {"java", "c", "c++", "javascript", "Sql"}; 
    String[] authors = {"games", "dennis", "Bjarne", "Brendan", "Donald"}; 
    double[] prices = {200.56d, 300.56d, 250.56d, 209.56d, 249.56d}; 
    listOfBooks = IntStream.range(0, languages.length) 
         .mapToObj(i -> new Books(languages[i], authors[i], prices[i])) 
         .collect(Collectors.toList()); 
    // Alternatively: 
    /* IntStream.range(0, languages.length) 
      .mapToObj(i -> new Books(languages[i], authors[i], prices[i])) 
      .forEach(listOfBooks::add); 
    */ 
} 
+0

ありがとうございます。 –

関連する問題