我在将字符串数组拆分为List / ArrayList时遇到问题。我意识到这是基本的东西,但我看了很多例子,我现在已经完全混淆了自己发生了什么(或者没有发生)。
一些代码段:
private String[] stringTempList;
private ArrayList<List<String>> arrayImageList = new ArrayList<List<String>>();
我的列表是从网页上读取的,格式为纯文本格式,如: ['One','Two','Three'等...]
所以,有些线路要删除我想要/不想要的东西(注意 - 我已将这些内容分开来帮助我按照这个过程完成):
stringExtractedList = stringText.substring(stringText.indexOf("['") + 2,
stringText.lastIndexOf("']"));
stringTempList = stringExtractedList.split("','");
从我可以看到上面的工作按预期工作(创建一个数组(stringTempList),拆分它看到','
的每个项目。
哪里出错:
arrayImageList.add((List<String>) Arrays.asList(stringTempList));
我希望这一行采用我的数组(stringTempList)并将项目移动到ArrayList中。我希望使用类似于arrayImageList.get(i);
的代码来访问各个元素。
但是,上面的代码似乎将所有项添加到arrayImageList中的第一个索引(列表大小始终为1)。运行一些调试测试,例如Log.d("Test", arrayImageList.get(0));
将返回以下内容:
[One,Two,Three,Four, etc...]
如果有人能指出我正确的方向,我将不胜感激。我想我在这里混淆了两个不同的想法。
答案 0 :(得分:2)
我认为您要使用addAll()
代替add()
您还需要声明
private List<String> arrayImageList = new ArrayList<String>();
答案 1 :(得分:2)
将arrayImageList更改为字符串列表:
private ArrayList<String> arrayImageList = new ArrayList<String>();
并使用addAll方法添加它们:
arrayImageList.addAll((List<String>) Arrays.asList(stringTempList));
答案 2 :(得分:1)
您想使用addAll
,而不是add
。
答案 3 :(得分:0)
我不确定这是“错误的正确方法”,我对java并不熟悉,但这是我的想法:
您的“arrayImageList”对象是List的ArrayList。当您添加stringTempList-object时,该对象将正确存储在“List-of-lists”的第一个可用索引处。如果要从“arrayImageList”访问各个元素(字符串),则必须按地址添加第二个维度(列表列表):
arrayImageList.get(0).get(i)&lt; - 这里不完全确定java语法,但是你得到了图片。
如果另一方面你不需要额外的维度,只需使用ArrayList而不是og ArrayList&gt;。