2017-10-26 2 views
-2

私はこの形式でファイルを作成したい:ここcsvファイルをソートする方法は?

device1,t1,t2,t3,t4,t5 
device2,t1,t2,t3,t4,t5 
device3,t6,t7,t8,t9,t10 
device4,t6,t7,t8,t9,t10 

は、t1, t2, ..., tnはタイムスタンプです。

すべての値tnは、そのデバイス名とともにJARファイルの1回の実行に基づいて生成されます。

私は今、JARファイルを使用して、このような形式を生成することができる午前:

例えば:csvファイルで

現在の形式:

device1,t1,device2,t2,device2,t3,device1,t4,device2,t5,device2,t6,device1,t7,device2,t8 

私はこれで欲しいですこの形式のCSVファイル:

デバイス1 -t1、T4、T7
デバイス2 -t2、だからここT3、T5、T6、T8

、私は右側に、特定のデバイスに属するタイムスタンプを配置する必要があります。

Javaでどのようにソートすることができますか教えてください。

+1

質問がわかりません。あなたが期待しているアウトプットと一緒に、数行の実際のデータを伝えることができますか? –

+1

また、これまでに行ったことを示してください。 – Alex

+0

csvファイルのデータをJavaプログラムに読み込んで、Map >のようなデータ構造に整理してから、csvファイルに書き戻すことができます。 – Yash

答えて

0

あなたの質問を理解した上で、私はここでこの質問に答えます。 デバイス名をハッシュマップキーとして保存するハッシュマップを作成することができます。 次に、値としてsortedCollectionを作成します。

このソートされたコレクションにタイムスタンプを送り、対応するデバイス名キーのHashMapを更新し続けます。

ソートされたタイムスタンプコレクションを更新するとき、ソートされた方法で自動的に保存されます。

あなたのハッシュマップは次のようになります

キー:値(コレクション)

デバイス1:T1、T4、T7

デバイス2:T2、T5、T8は(の終わりに、よりタイムスタンプを追加このコレクション)

このハッシュマップデータをCSVファイルに入力します。

これは、Javaの終了から行うことです。

新しいタイムスタンプがデバイスに追加されるたびにcsvでソートする場合は、Javaからこれを行うことができるように思えません。その後、すべてのデータがcsvファイルに追加されると、csvファイルにロジックを保持する必要があります。

+0

ありがとうございました。私はCSVファイルで同じことをすることができます: – codefemme

0

これは溶液である:

Iとして出力を得た: 全体マップ:{デバイス1 = [T8]、T9]、デバイス2 = [[[[[T2]、T3]、T5]、T7 ]、t10]}

BufferedReader reader = new BufferedReader(new FileReader("results.csv")); 

       String eachline; 
       // int i=2, j=2; 
       while((eachline = reader.readLine()) != null) 
       { 
        String[] fields = eachline.split(","); 

        if(Integer.parseInt(fields[2])==0)//data is = 0 
        { 
         if(tree.get(fields[0])!=null)//returns null if this key not present 
         { 
         values.add(tree.get(fields[0]));//get entire key value pair for that particular field 
         } 
         values.add(fields[1]);//to prev value, add next value 
         tree.put(fields[0], values.toString());// write to hashmap along with value 
         values.clear(); 
        } 
       } 


       System.out.println("Entire map:"+tree); 
関連する問題