List mylist = new ArrayList();
ArrayList mylist2 = new ArrayList();
I am wondering wha
The List version is the interface type - it only allows you to perform the methods declared by the interface, while the ArrayList typed variable allows you to do anything that is declared in the ArrayList and its supers. (including the List of course).
However, though it seems "useless" to chose the first - it actually allows you more flexibility - it will help you change your design much easier if you will later decide you want a LinkedList (for example) and not an ArrayList as the dynamic type.
Addition:
Of course it doesn't mean you need to automatically chose the List version. If you actually need to use the exact type of ArrayList - you should chose it. A good rule of thumb is to start with the interface version, and change it to the ArrayList only if you find yourself straggling to get something you would have done very easily with an ArrayList type (or if you find yourself casting to an ArrayList...)