HashSet, TreeSet ================ import java.util.*; public class Main { public static void main(String[] args) { Set s1 = new HashSet<>(); // HashSet implements Set s1.add("Apple"); s1.add("Bear"); System.out.println(s1); // Output#1: [Apple, Bear] s1.add("Cat"); s1.add("Dog"); s1.add("Apple"); s1.add("Bear"); System.out.println(s1); // Output#2: [Apple, Cat, Bear, Dog] } } Comparator =========== import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; class Product { private int part_number; //sometimes we want to compare part_number private String product_name; //sometimes we want compare product name public Product(String pName, int pNum) {part_number=pNum; product_name=pName;} public int getPNum() {return part_number;} public String getPName() {return product_name;} public String toString() {return String.format("%s(%d)",product_name,part_number);} } public class Main{ public static void main(String [] args) { ArrayList arr = new ArrayList<>(); arr.add(new Product("Widget",4562)); arr.add(new Product("Modem",9912)); arr.add(new Product("Toaster",1234)); Collections.sort(arr, new Comparator() { public int compare(Product a, Product b) { return Integer.compare(a.getPNum(),b.getPNum()); } }); System.out.println(arr); //Output: [Toaster(1234), Widget(4562), Modem(9912)] Collections.sort(arr, new Comparator() { public int compare(Product a, Product b) { return a.getPName().compareTo(b.getPName()); } }); System.out.println(arr); //Output: ___________ } }