遇到的问题:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPR90MNpmTwUEROBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyETMwQzNwEjMzIDOwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
解决后:
源代码:
/**
* 需求:删除字符串中的a8,并重新组成字符串
* @param args
*/
public static void main(String[] args) {
String str = "a3,a4,a5,a6,a8";
String[] moIds = str.split(StringPool.COMMA);
//错误写法:
// List<String> list = Arrays.asList(moIds);
//改正后:
ArrayList<String> list = new ArrayList<>(Arrays.asList(moIds));
for (int i = list.size() - 1; i >= 0; i--) {
if (list.get(i).equals("a8")) {
list.remove(i);
}
}
String moId = String.join(",", list);
System.out.println(moId);
}
问题分析:
为什么 Arrays.asList(arr)为什么不能remove和add,只到今天看了一眼Arrays底层源码,才发现这个问题
1.明明看上去返回的是ArrayList,但是仔细看就会发现,原来是静态内部类啊。
2.Arrays继承了AbstractList类
3.Arrays.add