可能な場合はインターフェイスを戻り値の型として使用することを強調するEffective Javaを読みました。議論を広げて、次の方法のどれが好まれるか、または良い習慣と見なされるか疑問に思っていました。
オプション1:
Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>(); // Interface 'Set' declared in type
for (int v = 0; v < graph.getNumberOfVertices(); v++) {
map.put(v, new HashSet<Integer>());
}
オプション 2:
Map<Integer, Set<Integer>> map = new HashMap<Integer, HashSet<Integer>>(); // Class 'HashSet' declared in type.
for (int v = 0; v < graph.getNumberOfVertices(); v++) {
map.put(v, new HashSet<Integer>());
}