자바의 스트림 API 사용
스트림 파이프라인은 배열, 컬렉션, I/O 채널 등이 될 수 있는 소스로 시작합니다. 해당 소스에 연결되어 없음에서 여러 중간 작업 및 마지막으로 결과를 생성하는 터미널 작업에 이르기까지 어디에나 연결됩니다. 스트림은 지연되고 계산은 터미널 작업이 시작된 후에만 발생합니다.
아래에서 Java Stream API가 제공하는 몇 가지 기능을 보여드리겠습니다.
기능을 시연하는 데 사용할 개체:
public class Pet {
private final String name;
private final int age;
private final Type type;
public Pet(String name, int age, Type type) {
super();
this.name = name;
this.age = age;
this.type = type;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public Type getType() {
return type;
}
@Override
public String toString() {
return "Pet [name=" + name + ", age=" + age + "]";
}
}
애완 동물의 유형을 설명하는 데 사용되는 열거형과 함께:
public enum Type {
DOG, CAT
}
이제 데모로 이동합니다.
public class Demo {
public static void main(String[] args) {
List<Pet> petAnimals = getPets();
// find all dogs
System.out.println("Find All Dogs");
List<Pet> dogs = petAnimals.stream()
.filter(animal -> animal.getType().equals(Type.DOG))
.collect(Collectors.toList());
dogs.forEach(System.out::println);
// sort by age
System.out.println("\nSort By Age");
List<Pet> ages = petAnimals.stream()
.sorted(Comparator.comparing(Pet::getAge))
.collect(Collectors.toList());
ages.forEach(System.out::println);
// average age of cats
System.out.println("\nAverage Age of Cats");
Double avgCatAge = petAnimals.stream()
.filter(animal -> animal.getType().equals(Type.CAT))
.collect(Collectors.averagingInt(Pet::getAge));
System.out.println(avgCatAge);
// average age of all pets
System.out.println("\nAverage Age of Pets");
Double avgPetAge = petAnimals.stream()
.collect(Collectors.averagingInt(Pet::getAge));
System.out.println(avgPetAge);
// name of youngest dog
System.out.println("\nName of Youngest Dog");
petAnimals.stream()
.filter(animal -> animal.getType().equals(Type.DOG))
.min(Comparator.comparing(Pet::getAge))
.map(animal -> animal.getName())
.ifPresent(System.out::println);
// number of cats
System.out.println("\nNumber of Cats");
long numOfCats = petAnimals.stream()
.filter(animal -> animal.getType().equals(Type.CAT))
.count();
System.out.println(numOfCats);
}
private static List<Pet> getPets(){
return Arrays.asList(
new Pet("Marley", 5, Type.DOG),
new Pet("Beethoven", 2, Type.CAT),
new Pet("Ernest", 4, Type.DOG),
new Pet("Tabby", 7, Type.CAT),
new Pet("Snowball", 1, Type.CAT),
new Pet("Lassie", 3, Type.DOG),
new Pet("Little Nicky", 6, Type.CAT),
new Pet("Copper", 12, Type.DOG)
);
}
}
// find all dogs
System.out.println("Find All Dogs");
List<Pet> dogs = petAnimals.stream()
.filter(animal -> animal.getType().equals(Type.DOG))
.collect(Collectors.toList());
dogs.forEach(System.out::println);
// sort by age
System.out.println("\nSort By Age");
List<Pet> ages = petAnimals.stream()
.sorted(Comparator.comparing(Pet::getAge))
.collect(Collectors.toList());
ages.forEach(System.out::println);
// average age of cats
System.out.println("\nAverage Age of Cats");
Double avgCatAge = petAnimals.stream()
.filter(animal -> animal.getType().equals(Type.CAT))
.collect(Collectors.averagingInt(Pet::getAge));
System.out.println(avgCatAge);
// average age of all pets
System.out.println("\nAverage Age of Pets");
Double avgPetAge = petAnimals.stream()
.collect(Collectors.averagingInt(Pet::getAge));
System.out.println(avgPetAge);
// name of youngest dog
System.out.println("\nName of Youngest Dog");
petAnimals.stream()
.filter(animal -> animal.getType().equals(Type.DOG))
.min(Comparator.comparing(Pet::getAge))
.map(animal -> animal.getName())
.ifPresent(System.out::println);
// number of cats
System.out.println("\nNumber of Cats");
long numOfCats = petAnimals.stream()
.filter(animal -> animal.getType().equals(Type.CAT))
.count();
System.out.println(numOfCats);
Reference
이 문제에 관하여(자바의 스트림 API 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/brittcodes/using-java-s-stream-api-hmj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)