제네릭은 Java에서 클래스나 메서드를 타입에 의존하지 않게 일반화하여 작성하고, 사용할 때 구체적인 타입을 지정하는 기능입니다.
List<String> list = new ArrayList<String>();
위 코드는 List와 ArrayList 모두 String 타입을 다루도록 지정한 것입니다.
다이아몬드 연산자는 Java 7부터 도입된 문법으로 생성자 쪽의 제네릭 타입을 생략할 수 있게 해주는 기능입니다.
List<String> list = new ArrayList<>();
여기서 <> (빈 꺽쇠)를 다이아몬드 연산자라고 부르며, 앞쪽에서 이미 지정한 타입을 자동으로 유추합니다.