gpt4 book ai didi

java - ArrayList 无法删除字符

转载 作者:行者123 更新时间:2023-11-29 04:18:40 24 4
gpt4 key购买 nike

我正在尝试删除 ArrayList 中的一个字符。但是我总是要构建一个对象来删除,为什么我不能像添加字符那样删除?

List<Character> list = new ArrayList<>();
list.add('z');
list.add('x');
list.add('y');
System.out.println("TEST1: " + list);
Character g = new Character('x');
list.remove(g);
System.out.println("TEST2: " + list);
list.remove('y');

The last line gives me these errors:

TEST1: [z, x, y]
TEST2: [z, y]
java.lang.IndexOutOfBoundsException: Index: 121, Size: 2
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.remove(ArrayList.java:492)

此处的 Java 文档显示: https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#remove-java.lang.Object-

boolean        add(E e)
Appends the specified element to the end of this list.
boolean remove(Object o)
Removes the first occurrence of the specified element from this list, if it is present.

最佳答案

ArrayList 有两个用于remove 的实现:

  • public boolean remove(Object o)
  • public E remove(int index)

当你调用它时:

list.remove(Character)

你在打电话

public boolean remove(Object o)

这样才能成功。

但是当你调用它时:

list.remove('y');

char y 将被转换为 int 121(试试这个 System.out.println((int) 'y'); ), 你隐含地调用

public E remove(121)

这就是为什么你得到 IndexOutOfBoundsException

关于java - ArrayList 无法删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50616378/

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