0

基本的に、1つのarrayListを別のarrayListに変更してから、パターンファインダーを使用せずに、arrayList2のアイテムがarrayList1のどのアイテムからのものであるかを関連付けることができるかどうかを知る必要があります。説明するのは難しいので、簡単な例で説明しましょう。

与えられたファイル入力:

Feline:
Cat Lion
Cheetah

Canine:
Dog
Wolves Fox

次のコマンドを使用して、ファイルを各段落に分割します。

String strLine;
String [] paragraph = strLine.split("");

ここから、高度なforループ内でaddメソッドを使用して、各アイテムをarrayListに追加します。

これにより、最初のarrayListが残ります。

[Feline: Cat Lion Cheetah, Canine: Dog Wolves Fox]

そこから、正規表現\\ s +を使用して、各アイテムを別々の単語に分割する必要があります。これは、別の高度なforループを使用すると簡単になります。

これにより、2番目のarrayListが残ります。

[Feline:, Cat, Lion, Cheetah, Canine:, Dog, Wolves, Fox]

私が知る必要があるのは、2番目のarrayListの項目を最初のarraylistで検索しなくても、2番目のarrayListのCheetahという単語が最初のarrayListの最初の項目に由来することをプログラムに認識させることができるかどうかです。重要なのは、1つのarrayListの1つの項目が他のarrayListから発生しているということです。

各段落の最初の単語が何であるかに応じて、各段落に対して異なることが行われるメソッドがあるため、基本的にこれを行う必要があります。

私の説明が紛らわしく、悪い用語について申し訳ない場合は、私に知らせてください。私の問題を説明するのに問題があります。

これが可能であれば、問題を解決する方法を教えてください。

よろしく

4

2 に答える 2

2

スペース文字に基づいて分割を行う場合は、配列リストの初期位置を維持することをお勧めします。たとえば、オブジェクトを次のように定義するとします。

public class MyWord
{
private int pos;

private String word;
public MyWord(int pos,String word)
{
 this.pos = pos;

 this.word = word;
}
//getters and setters
} 

次に、分割すると、次のようなことができます。

List<MyWord>secondList = new ArrayList<MyWord>();
for(int i=0;i<firstList.size();i++)
{
 String[]words = firstList.get(i).split("\\s");
 for(String wordToAdd : words)
 {
  MyWord w = new MyWord(i,wordToAdd);
  secondList.add(w);
 }
}

したがって、2番目のリストには、最初のリストに含まれていた元のインデックスだけでなく、単語を含むオブジェクトが含まれます。

これがお役に立てば幸いです。

于 2013-01-13T15:29:33.140 に答える
1

あなたのプログラムは決して「実現」することはありません。各Javaコレクションには指定されたセマンティクスがあり、文書化されていることを実行することは、それ以上でもそれ以下でもありません。

java.util.Listオブジェクトの順序付きリストを格納します。重複は検出されません。他のものとの関連付けは維持されません。あなたはリストを尋ねることができます'あなたはXを含んでいますか?containsメソッドで。これには、リスト内の項目の数に比例した時間がかかります。

オブジェクトをリストに格納する場合String、それらがどこから来たのかという概念はありません。それらはリストに含まれています。2番目のリストに最初のリストに関連するアイテムを含める必要がある場合は、それをコーディングする必要があります。2番目のリストに保存する必要があるのが最初のリストとの相関関係だけである場合、それはである可能性があり、List<Integer>それらのアイテムごとに、最初のリストでそれを検索してインデックスを取得します。したがって、はい、2番目のリストの各アイテムを処理するときに、最初のリストをスキャンして、それがどこにあるかを確認する必要があります。2番目のグループの何かが最初のグループでまったく言及されなかった場合に何をしたいのかはあなたの質問からは明らかではありません。

于 2013-01-13T15:36:05.710 に答える