Speaker: Venkat Subramaniam
See the table of contents for more posts
Exercise 0 – warm up
- How many years have you been doing Java
Exercise 1 – Collection’s remove
- An ArrayList containing 1, 2, 3 becomes 1, 3 when call remove(1)
- If you change to Collection<Integer> numbers = new ArrayList<>, what happens.
- It is [2,3] because uses method on Collection, not on the ArrayList
- “Code always does what you type and not what you mean”
Exercise 2: type inference
- Exercise 1 but with var numbers = new ArrayList<>()
- now it is [1,3] because var uses type on right which is ArrayList
- Just because you like type inference doesn’t mean use it all the time. Determine when right thing to do
Exercise 3: Arrays.asList()
- Arrays.asList(1, 2, 3)
- Which of add/set are printed and what is in list?
- add throws exception, set works so it is [1,2, 2]
- Lesson: quit using asList. Use List.of instead
Exercise 4: forEach
- .forEach(name -> upper.add(name))
- worked until made one change
- side effects is the problem (change was probably making it parallel)
- forgot “it works on my machine”. better is “it failed on my machine”. Want it to fail on your machine instead of in prod
- The lambda is not pure. A pure function is idempotent. Returns same result for same input regardless of how many times it is called.
- A pure function does not emphasize anything outside it. It is ok to mutate; it’s like changing clothes. Just don’t do so in public; aka as a side effect
- A pure function does not depending on anything outside that may possibly change.
Exercise 5: stream
- int[] factor= new int[]1,2,3};
- stream = numbers.stream().map(n -> n * factor[0]);
- factor[0] = 0;
- stream.forEach(System.out::println)
- 000 because lazy evaluation
My take
This was cool. It wasn’t Venkat’s usual style. It was more interactive. He had a QR code to a Google form for each exercise so the audience could reply. That’s a great technique. If I ever have to present remotely about certifications, I’m going to copy it! It was interesting seeing the Google form results A lot of mixed results