在下列引用中,在chris 修改last的值后,list中的值也改变。因为list和chris引用的是同一个对象。
所以chris客户可以修改它植入list中的对象。这是一个便利的方案。
但修改ADT中可变对象的能力,使客户有可能破坏ADT的完整性。
Name chris = new Name( "Chris", "Coffee");
List<Name> list = new ArrayList<Name>();
list.add(chris);
System. out.println( list);
chris.setLast( "Smith");//修改chris 的值
System. out.println( list);
输出:
有序表TreeSet:
修改chris的值,并不能修改set中对象的值。所以不会造成表无序。
String chris = new String( "Chris");
TreeSet<String> set= new TreeSet<String>();
list.add(chris);
System. out.println(set );
chris = new String( "Amis"); //修改chris 的值
System. out.println(chris);
System. out.println(set );
输出:
有序表只可以有他本身的list对象修改对象。