Interview Questions

Java 8 Streams - Example

import java.util.ArrayList;
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;
}