値に基づいてリストをフィルタリングしようとしています。私は2つを持っていますList
。 1つは削除したい名前のリスト、つまりanimalList
にあります。そしてもう1つは、animalList
の名前に一致するオブジェクトを削除する必要があるので、メインのプライマリリストからです。今私は解決策を持っているが、私はそれが多くの時間がかかると思う。以下はコードです。私はJava 8を使用しています。最適化できますか?Java - 複数の値に基づいてリストをフィルタリングする
if(animalList!=null && animalList.size()>0)
{
for(AnimalFilterPojo dtoObject:animalList)
{
if(!dtoObject.getApproved())
{
for(AnimalPrimaryDataPojo mainDtoObject: AnimalPrimaryDataPojoFilterList)
{
if(mainDtoObject.getAnimalName().equalsIgnoreCase(dtoObject.getValue()))
{
AnimalPrimaryDataPojoFilterList.remove(mainDtoObject);
}
}
}
}
反復処理中にリストから要素を削除するには、反復子を手動でインスタンス化し、iterator.remove()を使用するか、[this problem](https:// stackoverflow)が必要です。 .com/questions/16965484/java-util-concurrentmodificationexception-iterator/16965558)を参照してください。 もっと良い解決策は 'stream()'、 'filter()'、 'collect(Collectors.toList())'を使うことです。 –
最適化されたものは何ですか?速度?ブレースの量?このコードはおそらくより大きな設計問題の兆候であるため、ストリームを使用するように変換しても実際には役に立ちません。あなたの命名は、クラス名の末尾に 'Pojo'を追加することは、特に変数名として' dtoObject'を使うときには、とても不器用です。 – Kayaman