import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static class Students {
        int id;
        String name;

        public Students(final int id, final String name) {
            this.id = id;
            this.name = name;
        }

        public int getId() {
            return this.id;
        }

        public String getName() {
            return this.name;
        }
    }

    public static void main(String[] args) {
        List<Students> list1 = new ArrayList<>();
        list1.add(new Students(1, "Josh"));
        list1.add(new Students(2, "Jacob"));
        list1.add(new Students(3, "Jane"));
        List<Students> list2 = new ArrayList<>();
        list2.add(new Students(1, "Josh"));
        list2.add(new Students(4, "Jorge"));
        final Set<Integer> ids = new HashSet<>();
        final List<Students> unique = Stream.of(list1, list2).flatMap(List::stream).filter(s -> ids.add(s.getId()))
                .collect(Collectors.toList());
        unique.forEach(s -> System.out.println(s.getId() + "-" + s.getName()));
    }
}