遇到的問題:
![](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