好的,我有一个问题,我的代码似乎有效,但我没有特别好地测试它。
我正在尝试在ArrayList中设置一个元素。
ArrayList<StringBuilder> g=new ArrayList<StringBuilder>();
//set the array contents
g.get(2).append("Something");
我知道这样做
StringBuilder q=g.get(2);
q.append("something else?");
g.set(2,q);
有效,并且可能是正确的方法,但它似乎有很长的路要走。
我这样做是对的,如果我不是,那么这是我提到的第二种方式吗?
答案 0 :(得分:1)
如果您有StringBuilder
的列表,这些列表已经过适当修改,那么第一种方法就可以了。如果你有一些不可变类型的列表(比如String
),那么由于你不能改变你得到的对象,你必须使用第二种方法的变体,因为结果不是同一个对象。
e.g。
List<StringBuilder> widgets = new ArrayList<StringBuilder>();
// ...
StringBuilder widget = widgets.get(0);
widget.append(" version 2");
VS
List<String> widgets = new ArrayList<String>();
// ...
String widget = widgets.get(0);
widgets.set(2, widget + " version 2");
答案 1 :(得分:1)
调用List#get()方法时,您正在检索对StringBuilder对象的引用。 StringBuilder是一个可变对象。因此,如果要在索引2处修改StringBuilder的内容,则在修改后不需要再次设置引用。因此,以下就足够了:
g.get(2).append("Something");
答案 2 :(得分:0)
g.get(2).append("Something");
个实例初始化列表值,则 StringBuilder
有效。否则你将获得NullPointerException
。
请注意,在您的代码中,您定义ArrayList
类型StringBuilder
,但之后您尝试为其分配ArrayList
类型Integer
,但这不起作用< / p>