Let's "Iterator" through Fibonacci, forever and ever
Judging by the title of the question and the main class, I expected to see a simple iterator over Fibonacci numbers to infinity. Instead I see a class with too many responsibilities. It would be better to separate these concerns:


the infinite iterator
one class to get the nth Fibonacci number with caching
a utility class that implements the cache storage from a linked list of segments, the logic of which is encapsulated and hidden from users
the runner class with the main method


The Iterator&lt;BigInteger&gt; is a very good idea. I thought of perhaps providing an Iterator&lt;Integer&gt; too, but then, Fibonacci numbers tend to get very big very fast, so there's probably not much point. So just the Iterator&lt;BigInteger&gt; makes sense.

What you did with the sequence parts is an interesting way to implement a dynamically growing array-like storage without resize operations. As mentioned, this has nothing to do with Fibonacci numbers, and this logic could live in its own utility class. But I think it's probably not worth it. You can use a simple ArrayList instead. When the performance of the ArrayList becomes a real concern, you could try your alternative List implementation.