FileStatus[] status = hdfs.listStatus(new Path(args[5] + "/" + typeOfFlow + "/" + args[4] + "/" + decileValue + "/"));
// you need to pass in your hdfs path
ArrayList<FileStatus> directories1 = new ArrayList<FileStatus>();
for (FileStatus f : status) {
if (f.isDir()) {
directories1.add(f);
}
}
FileStatus[] directories = directories1.toArray(new FileStatus[directories1.size()]);
Arrays.sort(directories, new Comparator<FileStatus>() {
public int compare(FileStatus o1, FileStatus o2) {
return (int) (o1.getModificationTime() - o2.getModificationTime());
}
});
I am getting below exception :
Caused by: java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeHi(TimSort.java:899)
at java.util.TimSort.mergeAt(TimSort.java:516)
at java.util.TimSort.mergeForceCollapse(TimSort.java:457)
at java.util.TimSort.sort(TimSort.java:254)
at java.util.Arrays.sort(Arrays.java:1438)
I made a test class and checked for any of two object null or object.getModeificationTime null but the stack trace is not same :
Exception in thread "main" java.lang.NullPointerException
at MyObject.getModificationTime(Main.java:45)
at Main$1.compare(Main.java:35)
at Main$1.compare(Main.java:33)
at java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
at java.util.TimSort.sort(TimSort.java:220)
at java.util.Arrays.sort(Arrays.java:1438)
I want to know what is the case I am getting exception at the first.