Those are generics and where introduced on the v1.5 of Java
They allows you to provide compile time check of the class being used.
You can read the declaration:
private List<String> item = new ArrayList<String>();
As:
private List of Strings named item initialized with an ArraysList of Strings
So, if you attempt to put something that's not a String you'll get a compile time exception:
private List<String> items = new ArrayList<String>();
...
items.add( new Date() ); // fails at compilation time
When you get something from that list you'll get a list
private List<String> item = new ArrayList<String>();
...
items.add( "Hello" );
String s = items.get(0);// returns
To use different classes you provide a different type:
private List<Date> dates = new ArrayList<Date>();
And now you can only use Dates
with that collection.