0

文字列配列を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...] 

誰かが私を正しい方向に向けてくれたらありがたいです。ここで2つの異なるアイデアを混同したと思います。

4

4 に答える 4

2

arrayImageListを文字列のリストに変更します。

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

addAllメソッドを使用してそれらを追加します。

arrayImageList.addAll((List<String>) Arrays.asList(stringTempList));
于 2012-05-21T19:32:50.440 に答える
2

addAll()代わりに使いたいと思いますadd()

あなたも宣言したいでしょう

private List<String> arrayImageList = new ArrayList<String>();
于 2012-05-21T19:30:06.553 に答える
1

addAllではなく、を使用しますadd

于 2012-05-21T19:30:07.583 に答える
0

これが「間違った方法」であるかどうかはわかりません。Javaについてはあまり詳しくありませんが、次のように考えています。

「arrayImageList」オブジェクトは、リストのArrayListです。stringTempList-objectを追加すると、そのオブジェクトは「リストのリスト」の最初に使用可能なインデックスに正しく格納されます。「arrayImageList」から個々の要素(文字列)にアクセスする場合は、次のように2番目の次元(リストのリスト)をアドレス指定する必要があります。

arrayImageList.get(0).get(i) <-ここではjava-syntaxについて完全にはわかりませんが、全体像はわかります。

一方、追加のディメンションが必要ない場合は、ArrayList>の代わりにArrayListを使用してください。

于 2012-05-21T19:38:56.090 に答える