Guava - Как удалить из списка на основе предиката, отслеживая, что было удалено?

У меня есть ArrayList для фильтрации и различные Guava Predicate для его фильтрации. В этом списке будет всего 50-100 элементов.

Я планировал Iterables.removeIf , используя каждый предикат по очереди. Возможно, это не очень эффективно, но неважно (по крайней мере, removeIf имеет некоторую оптимизацию для списков RandomAccess)

Для отладки я хочу кратко записать, что делал каждый предикат. например,

Pred0 removed [a, c, g]
Pred1 removed []
Pred2 removed [b, f]

Есть несколько очевидных хакерских решений, но что вы посоветуете как самое чистое?

Что касается бонусных баллов, оно также должно быть достаточно эффективным. ;)

17
задан Iain 27 June 2011 в 14:40
поделиться