我想为我的集合实例添加自己的唯一标识符。 Hashcodes可以唯一地标识集合,但这不是我想要的。像这样......
List<Integer> classOneStudentIds = Arrays.asList(123,135);
classOneStudentIds.name = "classOne";
List<Integer> classTwoStudentIds = Arrays.asList(145,138);
classTwoStudentIds.name = "classTwo";
似乎不可能......
当代码是非递归的并且主程序知道列表代表什么时,不是很相关。但是,对于递归解决方案,我可以看到集合能够根据程序员命名的内容来识别自身是有帮助的。
对于Tower of Hanoi解决方案的以下片段,不必使用hashCode,而是使用与手头用例相关的有意义的名称。
Integer elem = pegOne.removeFirst();
System.out.println("Move element " + elem + " from " +
pegOne.hashCode());
pegThree.add(elem);
System.out.println(" to " + pegThree.hashCode());
集合有没有办法识别自己?
答案 0 :(得分:4)
不可能直接,但有一个有意义的对象。
class ListWithId {
String identifier;
List<Integer> classStudentIds;
// more properties you want to add
}
答案 1 :(得分:2)
class WrapperCollection<T> {
public String name;
public List<T> list;
}
上面的包装器收集代码将帮助您实现相同的目标。
我会做的改变: 1.更好的命名。 2.更好的封装 - 私有领域和不变性。 3.列出操作。