为什么这个语句在集合末尾添加了一个字符?

pro*_*_01 -2 java string arraylist

    ArrayList<String> strings=new ArrayList<String>();
    strings.add("h");
    strings.add("e");
    strings.add("l");
    strings.add("l");
    strings.add("o");
Run Code Online (Sandbox Code Playgroud)

下一个陈述是 strings.add(strings.remove(strings.size()-1)+"C");

然后输出结果是[h,e,l,l,oC],

所以我想知道为什么strings.add(strings.remove(strings.size()-1)+"C")得到这个结果,

小智 9

strings.remove(strings.size()-1)返回"o"因为ArrayList.remove返回被删除的元素.然后将"o"与"C"连接,创建"oC",将其添加到"o"的末尾ArrayList

你可以认为strings.add(strings.remove(strings.size()-1)+"C");相当于:

String s = strings.remove(strings.size()-1);
// s is now equal to "o"
// strings is equal to ["h", "e", "l", "l"]
s += "C";
// s is now equal to "oC"
strings.add(s);
// strings is equal to ["h", "e", "l", "l", "oC"]
Run Code Online (Sandbox Code Playgroud)