0

ファイルは次のようになります。

name1   134.2
name2   456.7
name3   265.3
...
...

テキスト ファイルを読み取って HashMap に保存した後、(最も高い値で) 並べ替えたいのですが、文字列の値を並べ替えるため、比較できないという問題があります。だから..テキストファイルの値を倍精度または整数形式でハッシュマップに入れる方法はありますか?

import java.io.*;
import java.util.*;


class Test 
{
    public static void main(String[] args) throws FileNotFoundException {

Scanner scanner = new Scanner(new FileReader("score.txt"));

        HashMap<String, String> map = new HashMap<String, String>();

        while (scanner.hasNextLine()) {
            String[] columns = scanner.nextLine().split("\t\t");
            map.put(columns[0], columns[1]);
        }

        System.out.println(map);
    }
}
4

2 に答える 2

3

はい、 を使用HashMap<String,Double>し、値を入力するときは、 を使用して double に変換しますDouble.parseDouble()

Float(ではなく で同じことを行うことができますが、Double通常は Double を使用する方がはるかに理にかなっています)。

于 2012-11-22T13:28:13.387 に答える
1

HashMap順序を保証しません:

このクラスは、マップの順序を保証するものではありません。特に、順序が時間の経過とともに一定に保たれることを保証するものではありません。

これは、ハッシュマップの並べ替えが役に立たないことを意味します。このようなキーと値のペアをロードする必要がある場合は、必須フィールドを持ち、インターフェイスを実装する独自のクラスを実装することを検討できComparibleます。

これにより、オブジェクトをロードしてから、呼び出すだけCollections.sort()でカスタムオブジェクトのリストを並べ替えることができます。

于 2012-11-22T13:31:44.437 に答える