Хитрость в том, что этот объект MediaContainerModel
наследует equals(Object)
непосредственно от Object
, и я не могу и не хочу заменять equals
в определении его класса. Вот что у меня есть на данный момент:
private void addMediaContainer(MediaContainerModel newMediaContainer, ProductModel product) {
List<MediaContainerModel> galleryImages = new ArrayList<>(product.getGalleryImages());
MediaContainerModel inserted = null;
// if a MediaContainer with same qualifier as newMediaContainer already exists, replace it
// with the new one to prevent duplicates
for (int i = 0; i < galleryImages.size(); i++) {
if (galleryImages.get(i).getQualifier().equals(newMediaContainer.getQualifier())) {
inserted = galleryImages.set(i, newMediaContainer);
}
}
// if not, add it
if (inserted == null) {
galleryImages.add(newMediaContainer);
galleryImages.sort((image1, image2) -> image2.getQualifier().compareTo(image1.getQualifier()));
}
product.setGalleryImages(galleryImages);
}
Я хочу сделать то же самое без уродливого for-l oop, переопределив MediaContainerModel.equals(Object)
только для этого метода, чтобы я мог использовать List.indexOf(Object)
или что-то с лямбдами. Возможно ли это в Java? Если да, то как? Спасибо!