...and even if you don't
know the size in advance, if you're using the things to store/retrieve primitives like bytes, ints, floats, etc., for such large collections you'll really want to write your own dynamic arrays backed by primitive arrays, since you're probably looping over these things quite a bit.
If you search around the forums a bit, people came up with a very fast and full featured dynamic float array class a long time ago, in case you're not up to writing one yourself.
Ah, and re: Vector vs. ArrayList, Vectors are thread-safe, ArrayLists are not. That means there's a bit of extra overhead when you use Vectors. I'd use ArrayLists by default, unless you might be accessing the thing from multiple threads at the same time.