基本的に、2つの値
int keyScore
を保存するモデルがありますおよび
List<Integer> moves
。メインクラスには、計算方法から生成されたこのモデルのリストがあります。
私がやろうとしているのは:
-
List<Integer>
を連結するkeyScoreが等しい場合に移動します - 重複を削除
HashSet
を使用しようとしました
List<Integer>
で等しいkeyScoreを見つけたときに移動しますが、モデルの複製になりました。
private class HeuristicResult {
private int keyResult;
private List<Integer> moves;
private HeuristicResult(int keyResult, List<Integer> moves) {
this.keyResult = keyResult;
this.moves = moves;
}
private int getKeyResult(){
return this.keyResult;
}
private List<Integer> getMoves(){
return this.moves;
}
private void setMoves(List<Integer> moves){
this.moves = moves;
}
@Override
public String toString() {
return String.format("%s : %s", this.keyResult, this.moves);
}
}
private List<HeuristicResult> concatHeuristicResults(List<HeuristicResult> heuristicResultsList){
List<HeuristicResult> heuristicResults = heuristicResultsList;
for(int i =0; i<heuristicResults.size()-2; i++){
int score = heuristicResults.get(i).getKeyResult();
for(int j = 0; j<heuristicResults.size()-1;j++){
if(score == heuristicResults.get(j).getKeyResult()){
heuristicResults.get(i).getMoves().addAll(heuristicResults.get(j).getMoves());
Set<Integer> temp = new HashSet<>(heuristicResults.get(i).getMoves());
heuristicResults.get(i).setMoves(new ArrayList<>(temp));
}
}
}
return heuristicResults;
}
これは、連結しようとすると出力として得られるものです。
1 : [0, 1]
0 : [0, 1, 3, 6, 7, 8]
0 : [0, 1, 3, 6, 7, 8]
-10 : [3]
0 : [0, 1, 3, 6, 7, 8]
0 : [0, 1, 3, 6, 7, 8]
0 : [0, 1, 3, 6, 7, 8]
0 : [0, 1, 3, 6, 7, 8]
0 : [0, 1, 3, 6, 7, 8]
-1 : [0, 1, 7, 8]
0 : [0, 1, 3, 6, 7, 8]
0 : [0, 1, 3, 6, 7, 8]
0 : [0, 1, 3, 6, 7, 8]
-1 : [0, 1, 7, 8]
0 : [6]
0 : [6]
回答 1 件
関連記事
- 列内の一意の値の数に基づいて計算された新しい変数
- Djangoは、モデルに一意の値を持つ2つのフィールドを設定しました
- 列1の値に基づいて列2の一意の値のみをフェッチするにはどうすればよいですか?
- Pythonで一意の値を持ち、連続したシーケンスがない行列nxnを作成するにはどうすればよいですか?
- R:各IDの一意の値の数を数える
- divに関連する入力の一意の値
- r:stringr - : str_splitを使用して、2つのリストから一意の値をマージします
- 特定の値に基づいてデータフレームをフィルタリングするだけでなく、パンダを使用して一意の識別子の他のすべての値を保持する方法はありますか?
- リスト内の重複する値をPythonで一意にするにはどうすればよいですか?
- リストから最小の一意の値を取得するにはどうすればよいですか?
これを試して:
階層的にマージしようとしています。まず、一意の
keyResult
が必要です sおよびこれらの一意のkeyResult
のそれぞれ smoves
をマージする 。それは2つのレベルのマージです。ザ・
HashMap
(keyResult
->HeuristicResult
)一意のkeyResult
のみを保持 sおよびそれらを最初のHeuristicResult
に対してマップします リストに表示されます。その後、繰り返し中に同じkeyResult
が見つかった場合 再び、それはmoves
を引き出します マップと反復で見つかったマップから、それらをマージします。マージされたSet
(最初にクリアすることにより)リストに戻されます。