thinkobjectoriented.hashnode.devJava I/O Under the HoodIn our previous article in this series, we explored the essentials of Java File I/O: understanding the concept of a Stream, writing text to a file using PrintWriter and utilising the modern try-with-resources syntax. However, to truly master Java Inp...Dec 6, 2025·7 min read
thinkobjectoriented.hashnode.devPersisting Data: Writing Java Objects to FilesIn the previous two blogs of this series, we mastered the art of organising data in memory using Collections and Sorting. We can now create dynamic lists of items, look them up instantly via maps, and sort them by any criteria we choose. But every pr...Dec 6, 2025·6 min read
thinkobjectoriented.hashnode.devBeyond Arrays: Structuring Data with Lists and MapsIn the early weeks of learning Java, arrays appear to be the ideal solution for storing data. They are simple, fast, and easy to declare. However, as our applications grow, the limitations of arrays become increasingly apparent. What happens when you...Dec 5, 2025·9 min read
thinkobjectoriented.hashnode.devBringing Order to Chaos with SortingIn the previous blog of this series, we learned how to store and organise data using flexible structures like Lists and Maps. We can now easily create a dynamic list of students or look them up instantly by their ID. But storing data is rarely enough...Dec 5, 2025·4 min read
thinkobjectoriented.hashnode.devThe Hidden Costs of Inheritance: Weakened Encapsulation and the Diamond ProblemIn a previous article of this series, we examined how interface inheritance provides a flexible alternative to rigid class hierarchies. But why exactly is class inheritance considered "rigid", or even potentially dangerous? Influential software engin...Dec 2, 2025·6 min read