เขียนจาวาหาค่าผลรวมของอาร์เรย์โดยไม่ต้องวนลูป

ใช้คลาส IntStream หาค่า sum ของอาร์เรย์ a โดยไม่ต้องวนลูป (Java 8)

IntStream.of(a).sum()
import java.util.stream.IntStream;

public class Test {
  public static void main(String[] args) {
    int[] a = {3,2,3,5,7};
    int sum;
    
    // calculate the total
    sum = IntStream.of(a).sum();
    System.out.println(sum);    // 20
    
    //  filter then calculate the total
    sum = IntStream.of(a).filter(i -> i != 3).sum();
    System.out.println(sum);    // 14
    
    // sort
    IntStream.of(a).sorted().forEach(System.out::println);
    
    // map
    a = IntStream.of(a).map(e -> e+1).toArray();
    System.out.println("a = " + java.util.Arrays.toString(a));  // a = [4, 3, 4, 6, 8]

    // sum by reduce
    sum = IntStream.of(a).reduce(0, (m,n) -> m+n);
    System.out.println(sum);    // 25
  }
}

interface Collection มีเมธอด stream ซึ่งนำมาใช้หาผลรวมของบางแอททริบิวท์ได้

import java.util.ArrayList;
import java.util.Collection;

public class Test {
  public static void main(String[] args) {
    Collection<Person> staffs = new ArrayList<>();
    staffs.add(new Person("Tom", 23));
    staffs.add(new Person("Ann", 32));
    staffs.add(new Person("Roy", 10));
    
    int totalAge = staffs.stream().mapToInt(Person::getAge).sum();
    System.out.println(totalAge); // 65
  }
}

สอนเขียน Java

หากจะนำข้อความไปใช้ ต้องแสดงที่มา และห้ามใช้ในเชิงพาณิชย์

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s