0

テキストファイルとして保存されたリストがあり、そのように保存されています

Id;name;function

テキストファイルを取得して行ごとに読み取る関数があります。テキストの各行はリスト内の新しい項目です。休眠を行うことで達成されます。

List<String> list
list.add(line);

私がやろうとしているのは、「0x0640e331」などの ID がリストにあるかどうかを確認することです。そして、その ID が見つかったテキスト行のすべてを取得する場合。そのため、休眠が起こり、

0x0604f552;name0;function
0x0640e331;name1;function
0x0342t521;name2;function

0x0640e331 を検索すると、0x0640e331;name1;function が返されます。

何か案は?

4

5 に答える 5

1

startsWithこのような方法を使用して...

ArrayList<String> queryResult = new ArrayList<String>();
String query = "0x0640e331";
for(String line : list) {
  if(line.startsWith(query)) {
     queryResult.add(line);
  }
}
return queryResult;

これは基本的に、配列リスト内の特定の行が文字列で始まるかどうかを確認しますquery。複数の行がある場合は、単純に別の ArrayList に追加して、それを結果として返します。

于 2013-03-04T06:20:36.643 に答える
0

大きなファイルがあり、すべてを読み取りたくなく、ファイル内の行が ID でソートされている場合は、RandomAccessFile を使用して独自のバイナリ検索アルゴリズムを実装できます。ランダムな位置で行を読み取るには、最初に位置を選択してから、新しい行記号まで前後に読み取ります。

于 2013-03-04T07:05:15.527 に答える
0

Map<String,String>リスト内の各要素にUseを使用して、文字列を取得し、マップに保存できます

疑似コード:

for(String item : list) {

String keyName= //use substring to get the id value from the string variable 'item'

map.put(keyName,item);
}
System.out.println(map.get("0x0640e331"));
于 2013-03-04T06:33:33.110 に答える
0
Use Map<String,List>

ID をキーとしてマップに保存し、キーの値を取得します

于 2013-03-04T06:20:40.483 に答える
0

リストの代わりにマップを使用できます。以下のサンプルプログラムを参照してください

import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

public class TextProgram {
    public static void main(String args[]) {
        String lineArray[] = { "0x0604f552;name0;function",
                "0x0640e331;name1;function", "0x0342t521;name2;function" };
        Map<String, String> map = new HashMap<String, String>();
        StringTokenizer tokenizer = null;
        for (String string : lineArray) {

            tokenizer = new StringTokenizer(string, ";");
            map.put(tokenizer.nextToken(), string);
        }
        System.out.println(map.get("0x0640e331"));
    }
}
于 2013-03-04T06:27:08.160 に答える