3

c: に ght.txt という名前の次のファイルがあり、次のデータが含まれています

Id|ytr|yts
1|W|T
2|W|T
3|W|T

ここで問題は、この列 (Id|ytr|yts) の位置も順番どおりではないということです。

Id|ytr|dgfj|fhfjk|fgrt|yts

または彼らはとしてすることができます..

Id|wer|ytr|weg|yts

だから私は次の方法を行い、以下に示すようにJavaでそれらを読みました

String[] headers = firstLine.split("|");
int id, Ix, Ixt, count = 0;

for(String header : headers) {
    if(header.equals("Id")) {
        idIx = count;
    }elseif (header.equals("Ix")) {
        Ixt = count;
    } elseif (header.equals("Ixt")) {
        Ixt = count;
    }
    count++;
}

ここで、id に対して列 ytr と yts の値を取得するような方法でそれらをマップに保存する必要があるため、マップには単一のキーが必要ですが、そのキー値に対しては複数になる可能性があります。マップに保存する方法を教えてくださいそのような方法

4

6 に答える 6

6

実行可能な最初のアプローチのようにMap<Integer,List<String>>聞こえます。

値が構造化されているように聞こえるので、これを保持する値クラスを作成する方が良いかもしれません。Map<Integer, YourValueClass>どこ

class YourValueClass
{
    String ix;
    String ixt;

    // constructor, getters and setters
}

基本的に、クラス/オブジェクトの観点から考える必要があります-オブジェクトを否定しないでください:-)

乾杯、

于 2013-11-11T08:49:31.823 に答える
3

何を言っているのかよくわかりませんが、もし私が正しければ、あなたはマルチマップを探しています。

@Anders R. Bystrupが示唆しているように、自分でロールすることができます。または、 Google Collections Multimap
などの既存の実装を使用できます。

于 2013-11-11T08:50:58.533 に答える
2

1 つのキーと複数の値を格納しないでください。代わりに、キーと値をリストとして保存できます。

于 2013-11-11T08:49:46.917 に答える
1

値クラス

class TextValues {
    final int id;
    final String ix;
    final String ixt;

    private TextValues(final int id, final String ix, final String ixt){
        this.id = id;
        this.ix = ix;
        this.ixt = ixt;
    }    

    public static TextValues createTextValues(int id, String ix, String ixt) {
        return new TextValues(id, ix, ixt);
    }    
}

使用法:

Map<Integer, TextValues> map = new HashMap<Integer, TextValues>();
map.put(1, TextValues.createTextValues(1, "ix value ", "ixt value"));
于 2013-11-11T09:09:07.660 に答える
0

Guava LibraryMultiMapから使用できます:

MultiMap<String,String> map = ArrayListMultimap.create();
map.put("key","value1");
map.put("key","value2");

以下を使用して:

System.out.println(map.get("key");

版画:

["value1","value2"]
于 2013-11-11T08:52:45.747 に答える