为什么我在这里得到IndexOutOfBoundsException


import java.util.*;
class two_strings_annagrams1 {
public static boolean compute(String inp1, String inp2) {
ArrayList<Character> hs = new ArrayList<Character>();
for (int i = 0; i < inp1.length(); i++) {
hs.add(inp1.charAt(i));
}
System.out.println(hs);
for (int j = 0; j < inp2.length(); j++) {
hs.remove(inp2.charAt(j));
}
System.out.println(hs);
if (hs.size() == 0) {
return true;
}
return false;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String inp = s.nextLine();
String inp2 = s.nextLine();
System.out.println(compute(inp, inp2));
}
}

当我使用ArrayList或LinkedList时,我会得到IndexOutOfBounds异常,但当我使用HashSet时,代码运行良好。发生异常的原因是什么?如何解决异常?

我认为hs.remove(inp2.charAt(j))解析为remove(int),而不是remove(Character),因为编译器更喜欢将char扩展为int,而不是将其装箱为Character

如果您使用

hs.remove((Character) inp2.charAt(j))

它将消除歧义。

相关内容

  • 没有找到相关文章

最新更新