diff --git a/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/AutoBoxing.java b/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/AutoBoxing.java new file mode 100644 index 0000000000000000000000000000000000000000..e654213a9775793613b9cf0e65aa6284860e8c78 --- /dev/null +++ b/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/AutoBoxing.java @@ -0,0 +1,29 @@ +package uk.ac.cam.acr31.oop.democode1920.lecture8; + +public class AutoBoxing { + + private static void takesPrimitive(int i) { + int j = i+1; + System.out.println(j); + } + + private static void takesObject(Integer i) { + int j = i+1; + System.out.println(j); + } + + public static void main(String[] args) { + int i =1; + takesPrimitive(i); // just pass int by value + takesObject(i); // autobox int to Integer + + Integer j = new Integer(2); + takesPrimitive(j); // autounbox Integer to int + takesObject(j); // just pass reference to j by value + + Integer k = null; + takesPrimitive(k); // attempt to unbox null to an int + takesObject(k); + + } +} diff --git a/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/Collections.java b/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/Collections.java new file mode 100644 index 0000000000000000000000000000000000000000..b71333d4b4354ad03c6c6d269bb77ed64f5e98d4 --- /dev/null +++ b/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/Collections.java @@ -0,0 +1,112 @@ +package uk.ac.cam.acr31.oop.democode1920.lecture8; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.PriorityQueue; +import java.util.TreeMap; +import java.util.TreeSet; + +public class Collections { + + private static void sets() { + HashSet<String> set1 = new HashSet<>(); + set1.add("a1"); + set1.add("c2"); + set1.add("c2"); + set1.add("c2"); + set1.add("b3"); + set1.add("d4"); + set1.add("e5"); + System.out.println(set1); + } + + private static void sets2() { + TreeSet<String> set1 = new TreeSet<>(); + set1.add("a1"); + set1.add("c2"); + set1.add("c2"); + set1.add("c2"); + set1.add("b3"); + set1.add("d4"); + set1.add("e5"); + System.out.println(set1); + System.out.println(set1.contains("b3")); + System.out.println(set1.contains("b4")); + } + + private static void sets3() { + LinkedHashSet<String> set1 = new LinkedHashSet<>(); + set1.add("a1"); + set1.add("c2"); + set1.add("c2"); + set1.add("c2"); + set1.add("b3"); + set1.add("d4"); + set1.add("e5"); + System.out.println(set1); + System.out.println(set1.contains("b3")); + System.out.println(set1.contains("b4")); + } + + private static void list() { + ArrayList<String> list = new ArrayList<>(); + list.add("a1"); + list.add("c2"); + list.add("c2"); + list.add("c2"); + list.add("b3"); + list.add("d4"); + list.add("e5"); + System.out.println(list); + list.get(2); + list.remove(0); + } + + private static void queue() { + PriorityQueue<String> queue = new PriorityQueue<>(); + queue.offer("b"); + queue.offer("a"); + System.out.println(queue.poll()); + System.out.println(queue.poll()); + } + + private static void map() { + HashMap<String, Integer> map = new HashMap<>(); + map.put("a1sadsaklm", 1); + map.put("b2skslm23", 2); + map.put("c3caWS", 2); + map.put("c3caWS", 1); + map.put("d4BGHTSS", 1); + map.put("e5as122", 1); + System.out.println(map); + } + + private static void map2() { + TreeMap<String, Integer> map = new TreeMap<>(); + map.put("c3caWS", 1); + map.put("d4BGHTSS", 1); + map.put("a1sadsaklm", 1); + map.put("b2skslm23", 2); + map.put("c3caWS", 2); + map.put("e5as122", 1); + map.put("not null", null); + System.out.println(map); + map.get("c3caWS"); // 2 + map.get("not here"); // null + if (map.containsKey("not here")) { + System.out.println("The key was there"); + } + } + + public static void main(String[] args) { + sets(); + sets2(); + sets3(); + list(); + queue(); + map(); + map2(); + } +} diff --git a/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/FailFast.java b/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/FailFast.java new file mode 100644 index 0000000000000000000000000000000000000000..487d8f82f906e6e0d2819a528233abc33a868eb7 --- /dev/null +++ b/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/FailFast.java @@ -0,0 +1,47 @@ +package uk.ac.cam.acr31.oop.democode1920.lecture8; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class FailFast { + + public static void main(String[] args) { + List<Integer> l = new ArrayList<>(List.of(1, 2, 3, 4, 5, 6)); + List<String> s = new ArrayList<>(List.of("a", "b", "c", "d", "e", "f")); + + for (int i = 0; i < l.size(); i++) { + Integer v1 = l.get(i); + String v2 = s.get(i); + System.out.println(v1 + " " + v2); + } + + for (Integer v1 : l) { + System.out.println(v1); + } + + Iterator<Integer> step1 = l.iterator(); + Iterator<String> step2 = s.iterator(); + while (step1.hasNext() && step2.hasNext()) { + Integer v1 = step1.next(); + String v2 = step2.next(); + System.out.println(v1 + " " + v2); + } + + int i = 0; + for (Integer v : l) { + if (i++ == 1) { + l.remove(i); + } + } + + Iterator<Integer> step3 = l.iterator(); + int j = 0; + while (step3.hasNext()) { + Integer v = step3.next(); + if (j++ == 1) { + step3.remove(); + } + } + } +} diff --git a/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/ReturnType.java b/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/ReturnType.java new file mode 100644 index 0000000000000000000000000000000000000000..f44686415de87fed4a528989a4d8ab6083e1ade6 --- /dev/null +++ b/src/main/java/uk/ac/cam/acr31/oop/democode1920/lecture8/ReturnType.java @@ -0,0 +1,30 @@ +package uk.ac.cam.acr31.oop.democode1920.lecture8; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +public class ReturnType { + + private static SortedSet<Integer> collect(Iterable<Integer> i) { + TreeSet<Integer> treeSet = new TreeSet<>(); + for (Integer value : i) { + treeSet.add(value); + } + return treeSet; + } + + public static void main(String[] args) { + + ArrayList<Integer> list = new ArrayList(List.of(4, 2, 1, 1, 1, 6)); + System.out.println(collect(list)); + + Set<Integer> integerSet = new HashSet<>(); + integerSet.add(1); + integerSet.add(3); + System.out.println(collect(integerSet)); + } +}