比较方法仅在存在3个或更多对象时调用

 淑敏小朋友 发布于 2023-02-13 17:26

我正在尝试理解,当且仅当已创建3个或更多Jpeg对象时才调用compare方法.

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

2对象不遵循顺序

3对象按升序排列

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 {

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());
}
}

JB Nizet.. 6

在第一次迭代中,列表为空,然后对其进行排序.没有什么可比的.然后,您将一个元素添加到列表中.

在第二次迭代中,列表包含单个元素,然后对其进行排序.还有什么可比的.然后,您将一个元素添加到列表中.

在第三次迭代中,列表中有两个元素,您可以对其进行排序.因此将第一个元素与第二个元素进行比较.然后,您将一个元素添加到列表中.

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

1 个回答
  • 在第一次迭代中,列表为空,然后对其进行排序.没有什么可比的.然后,您将一个元素添加到列表中.

    在第二次迭代中,列表包含单个元素,然后对其进行排序.还有什么可比的.然后,您将一个元素添加到列表中.

    在第三次迭代中,列表中有两个元素,您可以对其进行排序.因此将第一个元素与第二个元素进行比较.然后,您将一个元素添加到列表中.

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

    2023-02-13 17:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有