hogeList.forEach { it.code }
で確認出来るcodeの値を持った要素を
newList.forEach { it.code }
という新しいListの要素に、もしcodeが一致すれば置き換えたいです。
hogeList
に対してnewList
の方もループを回してcodeが一致すれば「newListの該当した要素」に置き換えればと思いましたが、なかなかうまくいきません。
Listに対して変更を加えるときはどうすればいいでしょうか?
単純に上書きをやるのではなく、まず削除してからと思い、
hogeList.toMutableList().removeAll{ it.code == “100”} //試しにcodeを直接指定
と、やってみたものの、実際には削除されていませんでした。
上書き、もしくは削除してから追加が出来ればいいのですが、何かいい方法はあるでしょうか?
わかる方いましたら教えて頂けるとありがたいです。
情報追記
hogeList
[Hoge(code=0029, name=もげ, Id=1, value=すごい), Id=1, Hoge(code=0030, name=おげ, Id=1, value=すごい), Hoge(code=0031, name=ももげ, Id=1, value=すごい)]
newList
[Hoge(code=0029, name=もげ, Id=1, value=ふつう), Hoge(code=0031, name=ももげ, Id=1, value=よわい)]
こんな感じの2つのリストがあり、codeが一致すれば、newListの要素でhogeListを上書きしたいです。
出来れば、codeの一致判定をして、一致したら上書き。
または、codeが一致したらhogeListの方を削除し、newListの要素をplusしたいです。
ちょっと分かりにくいので具体例を書いてもらえますか?とりあえずですが、変更するのではなく新しいListを作る方が簡単かもしれません。
失礼しました。情報追記しました。確かに破壊的に変更するのではなく新しいリストを作ったほうが、実装的には良さそうです。
「または、codeが一致したら」は「または、codeが一致しなかったら」の間違いでしょうか?(そうだとして、)それって newList そのものでは?
やりたいことというのが、結局は各要素のvalueの値を上書きしたい。ということです。その際newListにないcode(ここでは30)を持つ要素はそのまま。newListにあるcodeはnewListが持つvalueで上書きしたい、という感じです。分かりづらくてすみません。
「codeが一致したらhogeListの方を削除し、newListの要素をplus」は「上書き」の説明ってことですかね?
「上書き」はListの中の要素にアクセスしてvalue = ”ふつう" みたいなvalueに直接代入の感じをイメージしていました。「または、」以降はHoge(code=0029, name=もげ, Id=1, value=すごい)をまるっと削除してから、Hoge(code=0029, name=もげ, Id=1, value=ふつう)を追加、という感じでした。
「newListにしか無い」パターンは無いですか?あるとしたら、それは追加しないですかね?
「newListにしかない」パターンはひとまず想定していないので、追加もなしと考えています。
すみません、まだやり取りの途中だったのですね。。つい回答してしまいました
そろそろkakajikaさんの回答が付く頃だと思ってましたw
kakajikaさん、fuzzballさん、ありがとうございます!後ほど回答確認させてもらいます。

回答2件
あなたの回答
tips
プレビュー