最近、HashMapとLinkedListを引数として取る単純なメソッドを作成しました。のエントリ場合は1000年 リファクタリングしてJavaコードを再利用できるようにする
- 合計は、鍵の100
- 和で割り切れる必要があります:それは、これらのルールを次のいずれかの2つのエントリを見つけ、HashMapの反復処理しました同じ値が複数回表示されるケースをスキップします。
これらのルールに従うペアがLinkedListに追加されます。
private static void compare2(HashMap<Integer,String> values,List<String>results){
if (values.size()>1) {
for(HashMap.Entry<Integer,String> entry1:values.entrySet()){
for (HashMap.Entry<Integer,String> entry2:values.entrySet()){
if (entry1.getValue().equals(entry2.getValue()))continue;
if ((entry1.getKey() + entry2.getKey())%100 == 0 && (entry1.getKey() + entry2.getKey())<1000){
results.add(entry1.getKey() + "+" + entry2.getKey() + "=" + entry1.getKey() + entry2.getKey());
results.add(entry1.getValue());
results.add(entry2.getValue());
}
}
}
}
}
今、私は同じルールに従う3つのエントリを見つける類似のメソッドを作りたかったのです。問題は、これとmodyfiyngのコピー/貼り付けの代わりに既存のコードを再利用したいと思うことです。その方法を見つけることができないようです。結果が同じである限り私のメソッドを変更する必要があるかどうかは気にしません。
2または3ではなく、「n」(パラメータ)として実装してください。 – Oleg
ループを追加する方法はありません。しかし、現在のコードでも問題があります。 2つのエントリが同じ値を持つ場合、それらのエントリが異なる場合でもそのエントリのペアをスキップします。これは間違っています。 –
これは、値が等しい場合、値が各エントリで一意であり、ペアをスキップする必要があることを忘れていました。 – Arkadeusz91