Java:可以命名一个集合吗?

时间:2018-02-03 07:06:01

标签: java

我想为我的集合实例添加自己的唯一标识符。 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());

集合有没有办法识别自己?

2 个答案:

答案 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.列出操作。