尝试了解什么是表征曝光。 您能解释一下以下内容吗?
public class CharSet2 {
private ArrayList<Character> elts = new ArrayList<Character>();
public void insert(Character c) { elts.add(c); }
public void delete(Character c) { elts.remove(c); }
public boolean member(Character c) { return elts.contains(c); }
public ArrayList<Character> getElts() { return elts; }
public static void main(String[] args) {
CharSet2 s = new CharSet2();
Character a = new Character('X');
s.insert(a);
//s.getElts().add(a);
s.delete(a);
if (s.member(a)) System.out.println("Has a");
else System.out.println("No a");
}
}
当s.getElts().add(a)被注释掉时,结果是“No a”,但是加上它,结果是“Has a”。这是否意味着方法 insert 不会对列表 elts 执行任何操作?我认为 s.insert(a) 和 s.getElts().add(a) 都会做同样的事情。
最佳答案
没有。
使用s.getElts().add(a);
,您将在ArrayList
中拥有两个a
实例。因此,当您删除一个时,它仍然有第二个。
他们确实做同样的事情,只是方式不同。
<小时/>s.insert(a); // Count of a in list -> 1
s.getElts().add(a); // Count of a in list -> 2
s.delete(a); // Count of a in list -> 1
<小时/>
CharSet2
中的方法有助于封装 ArrayList
。它们不提供直接访问,但可以修改控制。尽管在直接添加和通过表示添加之间没有进行任何更改,但仍有更改的空间。
如果您想根据哈希码将元素添加到特定索引处,这将很有用。然后,在 CharSet#insert(Character)
方法中,您可以控制此行为。
关于java - 代表性曝光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20053600/