0

単一の値または値の範囲を含むリストがあるとします。ここで、新しい値または範囲をこのリストに追加すると、現在の値/範囲の何倍にも重なる可能性があります。これらの重複するすべてのオブジェクトを組み合わせて新しいインスタンスを作成し、それをリストに追加する必要があります。一方、新しいインスタンスに含まれるオブジェクトは元のリストから削除する必要があります。

したがって、私の質問は、これらのオブジェクトをリストから削除するか、反復ごとに新しいリストを作成する必要があるかということです。つまり、コードに入れます:

解決策 1

for (Range newObj : newItems){
  Iterator it = oList.iterator();
  while (it.hasNext()){
    Range o = it.next();
    if (canCombine(newObj, o)){
      newObj = combine(newObj, o);
      it.remove();
    }
  }
  oList.add(newObj);
}

解決策 2

for (Range newObj : newItems){
  List newList = new ArrayList();
  for (Range o : oList){
    if (canCombine(newObj, o)){
      new = combine(newObj, o);
    } else {
      newList.add(o);
    }
  }
  newList.add(newObj);
  oList = newList;
}

たぶん、別の解決策がさらに優れています。もしそうなら、親切に私に知らせてください。

4

1 に答える 1

0

newItems を反復するたびに newList を作成することを避けることができるか、新しいリストの作成をまったく避けることができると思います。

for (Object newObj : newItems){  
    for(int i=0;i<oList.size();i++){
        if (canCombine(newObj, oList.get(i))){ 
          newObj = combine(newObj,  oList.get(i)); 
          oList.remove(i);
        }    
      }  
      oList.add(newObj); 
    } 
于 2012-08-13T16:43:20.267 に答える