Java 8 – filter a map

Java 8 představila streamy a ty mají různé metody. V tomto příspěvku si ukážeme použití metod filter a map. Z původního seznamu se nejdříve vyfiltrují položky, které mají (present) status a vrátí se nový seznam, který obsahuje tyto statusy.

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

public class App2 {

	public static void main(String[] args) {
		List<MO> list = Arrays.asList(
				new MO(Optional.of(Status.CLOSED.getId()), "AAA"),
				new MO(Optional.of(Status.OPEN.getId()), "BBB"),
				new MO(Optional.empty(), "CCC"),
				new MO(Optional.empty(), "DDD"),
				new MO(Optional.of(Status.OPEN.getId()), "EEE")
		);

		List<Long> open = list.stream()
			.filter(myObject -> myObject.getStatus().isPresent())
			.map(myObject -> myObject.getStatus().get())
			.collect(Collectors.toList());

		open.forEach(System.out::println);
	}

	private enum Status {
		OPEN(1L), CLOSED(2L);

		private long id;

		private Status(long id) {
			this.id = id;
		}

		public long getId() {
			return id;
		}
	}
}
 class MO {

	private Optional<Long> status;
	private String name;

	public MO(Optional<Long> status, String name) {
		this.status = status;
		this.name = name;
	}

	public Optional<Long> getStatus() {
		return status;
	}

	public void setStatus(Optional<Long> status) {
		this.status = status;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

Výsledek:

2
1
1

Napsat komentář