gpt4 book ai didi

java - 仅当存在 3 个或更多对象时才调用 Compare 方法

转载 作者:行者123 更新时间:2023-11-29 09:48:20 25 4
gpt4 key购买 nike

我试图了解当且仅当已创建 3 个或更多 Jpeg 对象时调用 compare 方法。

目标是在将 Jpeg 时间戳添加到表之前按升序对其进行排序。

2 Objects not following sequence

3 Objects in ascending order

private class ExtractJpegMetadata extends Task {

private File[] selectedJpegs;
private Jpeg jpeg;

public ExtractJpegMetadata(Application application, File[] selectedJpegs) {
super(application);
this.selectedJpegs = selectedJpegs;
}

@Override
protected Object doInBackground() throws Exception {
setMessage("Extracting jpeg metadata.");

for (File file : selectedJpegs) {
com.drew.metadata.Metadata metadata = ImageMetadataReader.readMetadata(file);
// obtain the Exif directory
ExifSubIFDDirectory directory = metadata.getDirectory(ExifSubIFDDirectory.class);
jpeg = new Jpeg();
jpeg.setImgTimestamp(directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL));

Collections.sort(jpegList, jpeg);
jpegList.add(jpeg);

}

jpegAlbum.setJpegAlbum(jpegList);
return null;
}

@Override
protected void succeeded(Object result) {
setMessage("Finished extracting jpeg metadata.");
updateTableNeeded(true);
}
}

Jpeg类

@XmlRootElement
public class Jpeg implements Comparator<Jpeg> {

private Date imgTimestamp;

public Jpeg() {
}

public Jpeg(Date imgTimestamp) {
this.imgTimestamp = imgTimestamp;
}

public Date getImgTimestamp() {
return imgTimestamp;
}

@XmlElement
public void setImgTimestamp(Date imgTimestamp) {
this.imgTimestamp = imgTimestamp;
}

public int compare(Jpeg t, Jpeg t1) {
return t.getImgTimestamp().compareTo(t1.getImgTimestamp());
}
}

最佳答案

在第一次迭代中,列表是空的,您对其进行了排序。没有什么可比较的。然后向列表中添加一个元素。

在第二次迭代中,列表包含一个元素,您对其进行排序。仍然没有什么可比较的。然后向列表中添加一个元素。

在第三次迭代时,列表中有两个元素,您对其进行排序。所以第一个元素与第二个元素进行比较。然后向列表中添加一个元素。

我不明白你想要达到什么目的,但是在每次迭代时对列表进行排序是没有用的。您最好添加所有元素,完成后,再对列表进行排序。同样,在每次迭代时重建一个新的比较器也是无用的。由于此比较器仅在单个方法中使用,并不是任务状态的一部分,因此也没有理由将其设为实例变量。

关于java - 仅当存在 3 个或更多对象时才调用 Compare 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20301575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com