それらに関連した文字列を持つ整数を合計するループのために使用する方法はありますか?

Humzahハニフ:

私は、ArrayListのにCSVファイルを読み込むが、文字列の配列で、この場合は文字で、トップの文字列を返し、その後、彼らと一緒に特定の名前を持つすべての値を合計するforループを使用する必要があります。例えば、

"A", 2
"B", 3 
"C", 4
"A", 1
"B", 3

私は任意の助けである場合、私はゲッターを持っているので、オブジェクトにcsvファイルを読み込み、クラスを持っています。

B 6を合計として結果を有するであろう文字列[]をバック与える、順番に、[Bは、C、A]は、C 4を合計し、Aは3ありがとう合計します。

コードIは、これまで持っています

public ArrayList<String> getTopRooms(int n){
    ArrayList<String> roomNames = new ArrayList<>();
    for (int i =0; i<recordList.size();i++){
        if(!roomNames.contains(recordList.get(i).getRoomName()))
            roomNames.add(recordList.get(i).getRoomName());
    }

レコードリストは、私が予約されているトップの部屋を取得しようとしていますこのような場合には、CSVファイルからのデータが含まれています。すべての客室には、int型で示されている時間の長さを持っているので、例えば、キッチンは2の長さを持っているでしょう。

ティムBiegeleisen:

ただ、各文字/キーの集計を追跡するためにマップを使用します。

Map<String, Integer> map = new HashMap<>();
for (String line : yourList) {
    String[] parts = line.split(",\\s*");
    String key = parts[0];
    Integer value = Integer.parseInt(parts[1]);
    Integer currValue = map.get(key);
    map.put(key, Objects.isNull(currValue) ? value : currValue + value);
}

map.entrySset().stream().forEach(e -> System.out.println(e));

私はあなたのフラットファイルが実際のように見えることを、ここで想定しています:

A, 2
B, 3 
C, 4
A, 1
B, 3

そして、あなたのレコードリスト内の各エントリは、1つのCSVタプルになること。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=277468&siteId=1