0

我在将字符串数组拆分为 List/ArrayList 时遇到问题。我意识到这是基本的东西,但我已经看过很多例子,以至于我现在对正在发生的事情(或没有发生的事情)完全感到困惑。

一些代码片段:

private String[] stringTempList;
private ArrayList<List<String>> arrayImageList = new ArrayList<List<String>>();

我的列表是从网页中读取的,格式为纯文本,例如:['One','Two','Three', etc ...]

所以,一些行来去除我想要/不想要的东西(注意 - 我已经将它们分开以帮助我完成整个过程):

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...] 

如果有人能指出我正确的方向,我将不胜感激。我想我在这里混淆了两个不同的想法。

4

4 回答 4

2

我想你想用addAll()而不是add()

您还需要声明

private List<String> arrayImageList = new ArrayList<String>();
于 2012-05-21T19:30:06.553 回答
2

将 arrayImageList 更改为字符串列表:

private ArrayList<String> arrayImageList = new ArrayList<String>();

并使用 addAll 方法添加它们:

arrayImageList.addAll((List<String>) Arrays.asList(stringTempList));
于 2012-05-21T19:32:50.440 回答
1

你想用addAll,没有add

于 2012-05-21T19:30:07.583 回答
0

我不确定我是否得到了这个“错误的方法”,而且我对 java 也不是很熟悉,但这是我的想法:

您的“arrayImageList”对象是列表的 ArrayList。当您添加您的 stringTempList 对象时,该对象正确存储在您的“列表列表”的第一个可用索引中。如果要从“arrayImageList”访问单个元素(字符串),则必须像这样处理第二维(列表的列表):

arrayImageList.get(0).get(i) <- 这里不完全确定 java-syntax,但你明白了。

另一方面,如果您不需要额外的维度,只需使用 ArrayList 代替 og ArrayList>。

于 2012-05-21T19:38:56.090 回答