I find it odd that "get" is faster on a GapList than an ArrayList. Surely "get" on an ArrayList should be unbeatable.
GapList.get inlines everything, including the rangechecks. ArrayList has two calls to functions.
It might be due to caching, but even so it's going to depend on how big the data is. When the data's bigger than cache and the GapList is copying large amounts of data for every random insert, the O(1) linked-list insert is going to beat it.
Or maybe he's inserting to an indexed location, and counting the time required for the LinkedList to traverse to that location.