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

时间:2016-06-03 01:17:40

标签: java string arraylist

    ArrayList<String> strings=new ArrayList<String>();
    strings.add("h");
    strings.add("e");
    strings.add("l");
    strings.add("l");
    strings.add("o");

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

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

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

2 个答案:

答案 0 :(得分:9)

strings.remove(strings.size()-1)返回“o”,因为ArrayList.remove会返回已删除的元素。然后将“o”与“C”连接,创建“oC”,将其添加到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"]

答案 1 :(得分:3)

strings.remove() returns the removed element to the calling place.

  

删除此列表中指定位置的元素(可选操作)。将任何后续元素向左移位(从索引中减去一个)。返回从列表中删除的元素。

在这种情况下,它会返回&#39; o&#39;。然后你用C&#39;连接它。 结果是&#34; oC&#34;

你的最后一句话是加上这个&#34; oC&#34;到strings arraylist。