有關java list的問題

小弟有一個JAVA list的問題
事原小弟 search db 後return了一個list去class

就像這樣
A B C D
1 2 3 4
1 1 4 5
1 2 5 6
....

共100條

現在如果list內的A和B是一樣的話
就會將2條record內的c和d相加, 變成一條record

如下
A B C D
1 2 8 10
1 1 4 5
...

請問用怎樣的方法才最有效?

The most efficient way?  Do it in the SQL itself.

TOP

可以的話....我也想
實際上是一大堆string串起來再要加上html code....

加起來只是比喻而已.....

TOP

SQL 用 group by 就可以直出
e.g.:
select A, B, SUM(C), SUM(D) from yourtablename
group by A, B order by A, B

不過用 Java 用後期加工都好容易, 都係開多個 List

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

原帖由 rabbit82047 於 2009-9-1 14:01 發表
SQL 用 group by 就可以直出
e.g.:
select A, B, SUM(C), SUM(D) from yourtablename
group by A, B order by A, B

不過用 Java 用後期加工都好容易, 都係開多個 List

可能是我寫得不好
實際上應該是
A B C D
1 2 我 你
1 4 Z Y
1 2 O X
...

若果A和B是一樣的話
那就將C和D合拼一起同時加一些處理
就會變成

A B C D
1 2 我是O 你不是X
1 4 Z Y
...

用SQL處理的話
query就會變得超長

用for loop + if 是可以
不過現在100 record只是最少數
最多的時候有一萬隻record

用for loop的話.....

嗯...天文數字阿

TOP

唔想講野直接打example code...攞到個概念就得

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

for (Record rec : records) {
        String key = rec.getA() + "_" + rec.getB();
       
        if (map.containsKey(key)) {
                Record nRec = compute(map.get(key), rec);
                map.put(key, nRec);
        } else {
                map.put(key, rec);
        }
}

TOP

why not do sth like this to replace the "if" part:
  1. map.put(key, Record.merge(map.get(key), rec));
複製代碼

[ 本帖最後由 henrywho 於 2009-9-2 12:03 編輯 ]

TOP

提示: 作者被禁止或刪除 內容自動屏蔽

TOP

謝謝大家意見
小弟證實是work的

不過我用左while loop + Iterator + hashmap去做

[ 本帖最後由 DennisChoi 於 2009-9-4 09:13 編輯 ]

TOP