2つのリストのデータを3番目のリストにマッピングするのが難しいです。私のサンプルデータは次の通りです:2つの配列からのJavaマッピングデータと3番目の配列への挿入
Categorylist ID: 1,2,3,4,5,6,7,8,9,10,42,46,49,50
CurrentMonthByCat ID: 1,2,3,4,5,6,7,8,9,10,42,49,50
(the transaction amount value for CurrentMonthByCat: 92,46,40,180,60,10,1510,200,500,10,234,12)
currentMonthByCatには46がありません。 currentMonthByCat IDがカテゴライズIDから存在しない場合、CurrentMonthByCatからトランザクション量を取得して3番目のリストにプッシュするのではなく、3番目のリストに0を挿入するような方法で処理しようとしています。
ArrayList<Double> total = new ArrayList<Double>();
for(int i = 0; i < categorylist.size(); i++){
for(int j = 0; j < currentMonthByCat.size(); j++){
if(categorylist.get(i).getCategoryID().equals(currentMonthByCat.get(j).getCategory().getCategoryID())){
Log.d("IIIII", categorylist.get(i).getCategoryID());
Log.d("JJJJJ", currentMonthByCat.get(j).getCategory().getCategoryID());
total.add((double)currentMonthByCat.get(j).getTransactionAmt());
}else{
total.add(0.0);
}
}
}
for(int k = 0; k < total.size(); k++){
Log.d("KKKKK", String.valueOf(total.get(k)));
}
しかし、全リストのプリントアウト結果は次のとおりです。私が期待したもの
92,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0...
は次のとおりです。
92,46,40,180,60,10,1510,200,500,10,0,234,12
私はcurrentMonthByCatでIDが一致しない場合にのみ、0を挿入したいですカテゴリ内のID。例えば、右から3番目のID 46。
第3の配列に最初に92を挿入した後、カテゴライズIDが1のままであるため、ID2に移動する前にcurrentMonthByCatの残りすべてと比較します。そのため、不要なゼロ。しかし、私が望んだものを達成するためにそれを実際にどのようにソートするのかは分かりません。
アイデア?
ありがとうございます。
しかし、このコードは正しく、ID 46で3番目の最後の位置はcurrentMonthByCatには存在しません.0よりも3番目の配列に2の位置の前に値が挿入されています。 existAtIndexを-1のelseループの中に入れてください – guest176969
私はそれが望むようにゼロを挿入すると思います。ループの後のif条件は、存在する場合に要素の位置を追加するか、またはゼロを追加することを意味します。 –
私は、ifAuthIndexを、最初のif文の-1の下に-1に設定しなければならないと思います。私はそれを設定し、私が望んだものを達成しました。さもなければ、それは以前の値をとり、それがなぜ私には分からないのかを設定します。助けてくれてありがとう! :) – guest176969