Also, (tangentially) for making games, what do you guys think of XNA?
.NET is excellent. Learning XNA before you actually understand graphics programming, not so much. I use it as the basis for my cross-platform game library (XNA on Windows/360/WP7, OpenTK/OpenGL on OS X, OpenTK/OpenGL ES on Android/iOS) and it is satisfactory, but the value of it is proportional to your general competence in both programming and graphics programming.
With all due respect, seeing as how you asked where to get a Java compiler (and you failed to
ask a smart question in the process, this question was
trivially answered via Google), I feel confident in suggesting you aren't there yet. One step at a time.
Yes, it is still there, you can use either, but arraylists are rerly used compaired to linked lists. Array lists start to slow down.
This is so egregiously and offensively false to the point where I question whether you actually know the difference between an ArrayList and a LinkedList.
If anything, the LinkedList is rerly[sic] used in comparison to the ArrayList. Traversals of LinkedLists are O(n) to the ArrayList's O(1), and the insert step of the ArrayList is an amortized O(1) while the insert step of the LinkedList is a constant O(1) (as, IIRC, the Java implementation retains a tail reference). The value of a LinkedList is slight in the overwhelming majority of cases, whereas an ArrayList allows for significantly more flexibility in terms of most operations--to the point where, in any non-sequential use case, the LinkedList construct becomes utterly unusable beyond n=10000 or so. While over-capacity recopies of ArrayLists are not cheap, they do not completely hose your ability to access your data.
You shouldn't give advice if you don't understand what you're talking about. You do not.