これは、リスト自体の実装に依存します。要素ごとに一意のハッシュを使用してリストを実装できる場合、要素のフェッチは非常に簡単です。
したがって、リスト自体の実装に要約されます。ある種のランダム アクセス リスト (時間の経過とともに定数をフェッチする) の場合、この操作は簡単です。リストが純粋な順次アクセス リストである場合、このオプションは実装と同じになります。
たとえば、Java では次のArrayList
ようにします。
「タイプ」が要素を一意に識別すると仮定すると、正しく定義されたequals
andhashcode
が Item クラスに含まれます。
if(list.contains(item))
{
Item item = list.get(list.indexOf(item));
item.setText(text);
}
else
{
list.add(item);
}
が一意でない場合type
でも、実装は可能です。肝心なのは、リストの実装です。適切なランダム アクセス リストを使用すると、ほとんどの場合、次のように単純になります。
if(!list.contains(item))
{
return;
}
do
{
int i = list.indexOf(item);
Item item = list.get(i);
item.setText(text);
list = list.subList(i+1, list.size());
} while(list.indexOf(item) != list.lastIndexOf(item));