gpt4 book ai didi

java - 代表性曝光

转载 作者:太空宇宙 更新时间:2023-11-04 15:24:00 25 4
gpt4 key购买 nike

尝试了解什么是表征曝光。您能解释一下以下内容吗?

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com