This post provides a quick overview of the 4 main garbage collectors available in Java.


Concurrent Collections in Java
Learn why modern concurrent collections are a great improvement over legacy synchronized collections in Java.

Binary Search Algorithm
Binary search can find an element in a sorted array in lg(n) time. That means finding an element in a billionitem array in just 30 checks!

Dijkstra’s Algorithm (Java)
A simple breadthfirstsearch based algorithm for finding the shortest path between two nodes in a directed or undirected graph.

Verify New Code w/ Debugger & Loggers!
This is just a short post that shows a reallife example of why it is often good to view the debug log and check things out in the debugger even when things seem to be working fine.

Insertion Sort
Insertion sort is a simple O(N^2) algorithm, but it is actually quite useful in practice.

Functional Permutations
Generate and count all the permutations of a given input string in a functional manner.

Locker Number W/O Repeats
How do you generate and count all N digit numbers that can't use repeating digits? E.g. 0123, 0124... > 5,040 combinations.

Interleaving Iterator
Creating an iterator of iterators is a popular interview question. This queueleveraging solution is very simple, effective, and easy to remember.

The Heap Data Structure
A heap is a specialized data structure that is designed to always yield the smallest element in O(lg(n)) time (assuming it is a minheap; a maxheap would do the opposite. It is the foundation of a priority queue.