import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* Using Java 8 Steams to process collections and perform SQL like operations with Collections.
*/
public class StreamOps {
public static void main(String[] args){
Item item1 = new Item(1,"Prod1",Status.NEW);
Item item2 = new Item(2,"Prod2",Status.ORDERED);
Item item3 = new Item(3,"Prod3",Status.NEW);
Item item4 = new Item(4,"Prod4",Status.SHIPPED);
Item item5 = new Item(5,"Prod5",Status.NEW);
Item item6 = new Item(6,"Prod6",Status.DELIVERED);
List<Item> items = new ArrayList<>();
items.add(item1);
items.add(item2);
items.add(item3);
items.add(item4);
items.add(item5);
items.add(item6);
// return item Ids with New status
List<Integer> idList = items.stream().filter(it -> it.getStatus()==Status.NEW).map(Item::getId).collect(Collectors.toList());
// return all items with New status
List<Item> itemList = items.stream().filter(it -> it.getStatus()==Status.NEW).collect(Collectors.toList());
System.out.println(idList);
System.out.println(itemList);
}
}
class Item {
private int id;
private String name;
private Status status;
private Date date;
public Item(int id, String name, Status status) {
super();
this.id = id;
this.name = name;
this.status = status;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "Item [id=" + id + ", name=" + name + ", status=" + status + "]";
}
}
enum Status{
NEW,ORDERED,SHIPPED,DELIVERED;
}