時々、私たちは、Javaでのデータ収集にグループ操作する必要があります。
例えば:ビルお金とする対象(フロート)とタイプ(文字列)は、<ビル>事前設定リスト属性ビルのタイプ属性に応じてグループ化される必要がある、お金の合計を計算します。2つのアイデアがあります。
考えました:
タイプを設定し、すべての場合を計算するには、お金の種類ごとに収集し、計算を横断します。擬似コードは次のよう:
地図<文字列、文字列>タイプマップ=新しいHashMapの<文字列、文字列>(); あちこち(ビル法案:billList){ typeMap.put(bill.getType、 ""); } 前後(文字列T:typeMap.keySet){ {(billListビル紙幣)のための IF(bill.getType.equals(T)){ //相应的业务处理 } } }
2考えます:
パブリック クラスのテスト{ 公共 静的 ボイドメイン(文字列[]引数){ リスト <ビル>リスト= 新規のArrayList <ビル> (); ビルB = 新ビル(); b.setType( "A" )。 b.setMoney( 1 )。 list.add(B)。 B = 新ビル(); b.setType( "B" )。 b.setMoney( 2 )。 list.add(B)。 B = 新ビル(); b.setType( "C" )。 b.setMoney( 3 )。 list.add(B)。 B = 新ビル(); b.setType( "A" )。 b.setMoney( 1 )。 list.add(B)。 B = 新ビル(); b.setType( "B" )。 b.setMoney( 2 )。 list.add(B)。 B = 新ビル(); b.setType( "C" )。 b.setMoney( 3 )。 list.add(B)。 一覧 <ビル>双方向= 新しいのArrayList <ビル> (); 用(ビル法案:リスト){ boolean型の状態= 偽; 用(ビル手形:BI){ 場合(bills.getType()に等しい(bill.getType())){ int型マネー= bills.getMoney()。 お金 + = bill.getMoney(); bills.setMoney(金)。 状態 = 真; } } もし(!{状態) bi.add(紙幣); } } のための(ビル紙幣:BI){ System.out.printlnは(bill.getType() +」 "+ bill.getMoney()); } } }
結果:
2
B 4
C 6