我在Java中有一个带有大量文件的ArrayList(~40,000个文件).我需要按日期对这些文件进行升序/降序排序.目前,我用的很简单
Collections.sort(fileList, new FileDateComparator());
Run Code Online (Sandbox Code Playgroud)
FileDateComparator的位置
public class FileDateComparator implements Comparator<File>
{
@Override
public int compare(File o1, File o2)
{
if(o1.lastModified() < o2.lastModified())
return -1;
if(o1.lastModified()==o2.lastModified())
return 0;
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
排序对我来说占用的时间太长,比如20秒或更长时间.有没有更有效的方法来实现这一点?我已经尝试使用Apache I/O LastModifiedFileComparator作为比较器,但它似乎以相同的方式实现,因为它需要相同的时间.
我目前正在开发cassandra source(2.0.4),我想知道如何使用ColumnFamily类中的方法isMarkedForDelete().如果我用键插入一行,则该方法返回false,如果我删除该行,则返回true.这就是我期望的方式;-)但是,这就是我想知道的问题,如果我再次使用相同的密钥插入一行,该方法仍会返回false,尽管该行未被删除(因为它是一个具有相同键的新行).如果删除并重新插入的行似乎总是保留该标志(如果它在过去被删除过一次).如何可靠地确定是否删除了行?提前致谢!
我使用Cassandra 2.0和CQL3作为查询语言.如果省略值LIMIT,则Cassandra通常默认为SELECT语句的LIMIT值为10,000.是否可以查询列族的所有行,无论将返回多少行?或者我必须将LIMIT值设置为一个非常高的值,以确保获得所有行?谢谢!