import java.util.*;
import java.lang.*;
import java.io.*;
class FilesByExtension
{
{
{"b.txt", "a.txt", "a.doc", "b.doc", "z.aaa",
".htaccess", "a.zzz", "noextension", ".nonombre",
"a1.txt", "a11.txt", "11z.html", "^fake.exe",
"numextension.11txt", "espacioextension. <-un espacio!", "extensionsimbolo@email.@com",
"split.py"
};
String [] arrFilesOk
= dirListByExtension
(arrFiles
); }
public static String [] dirListByExtension
(String [] arrFiles
) { Arrays.
sort(arrFiles,
new Comparator
<String
>() { @Override
String s1
= ss1.
toLowerCase(); String s2
= ss2.
toLowerCase(); final int s1Dot = s1.lastIndexOf('.');
final int s2Dot = s2.lastIndexOf('.');
//
if ((s1Dot == -1) == (s2Dot == -1)) { // both or neither
s1 = s1.substring(s1Dot + 1);
s2 = s2.substring(s2Dot + 1);
return s1.compareTo(s2);
} else if (s1Dot == -1) { // only s2 has an extension, so s1 goes first
return -1;
} else { // only s1 has an extension, so s1 goes second
return 1;
}
}
});
return arrFiles;
/*
Arrays.sort(arrFiles, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
final int s1Dot = s1.lastIndexOf('.');
final int s2Dot = s2.lastIndexOf('.');
if ((s1Dot == -1) == (s2Dot == -1)) {
s1 = s1.substring(s1Dot + 1);
s2 = s2.substring(s2Dot + 1);
return s1.compareTo(s2);
} else if (s1Dot == -1) {
return -1;
} else {
return 1;
}
}
});
return arrFiles;
*/
}
}
CmltcG9ydCBqYXZhLnV0aWwuKjsKaW1wb3J0IGphdmEubGFuZy4qOwppbXBvcnQgamF2YS5pby4qOwoKCgpjbGFzcyBGaWxlc0J5RXh0ZW5zaW9uCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN0cmluZyBbXSBhcnJGaWxlcyA9IAoJCQkJCQkJeyJiLnR4dCIsICJhLnR4dCIsICJhLmRvYyIsICJiLmRvYyIsICJ6LmFhYSIsIAoJCQkJCQkJICIuaHRhY2Nlc3MiLCAiYS56enoiLCAibm9leHRlbnNpb24iLCAiLm5vbm9tYnJlIiwKCQkJCQkJCSAiYTEudHh0IiwgImExMS50eHQiLCAiMTF6Lmh0bWwiLCAiXmZha2UuZXhlIiwKCQkJCQkJCSAibnVtZXh0ZW5zaW9uLjExdHh0IiwgImVzcGFjaW9leHRlbnNpb24uIDwtdW4gZXNwYWNpbyEiLCAiZXh0ZW5zaW9uc2ltYm9sb0BlbWFpbC5AY29tIiwgCgkJCQkJCQkgInNwbGl0LnB5IgoJCQkJCQkJIH07CgkJU3RyaW5nIFtdIGFyckZpbGVzT2sgPSBkaXJMaXN0QnlFeHRlbnNpb24oYXJyRmlsZXMpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihBcnJheXMudG9TdHJpbmcoYXJyRmlsZXNPaykpOwoJfQoKICBwdWJsaWMgc3RhdGljIFN0cmluZyBbXSBkaXJMaXN0QnlFeHRlbnNpb24oU3RyaW5nIFtdIGFyckZpbGVzKSAgewogICBBcnJheXMuc29ydChhcnJGaWxlcywgbmV3IENvbXBhcmF0b3I8U3RyaW5nPigpIHsKICAgIEBPdmVycmlkZQoKICAgICAgcHVibGljIGludCBjb21wYXJlKFN0cmluZyBzczEsIFN0cmluZyBzczIpIHsKICAgICAgICAgIFN0cmluZyBzMSA9IHNzMS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgU3RyaW5nIHMyID0gc3MyLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICBmaW5hbCBpbnQgczFEb3QgPSBzMS5sYXN0SW5kZXhPZignLicpOwogICAgICAgICAgZmluYWwgaW50IHMyRG90ID0gczIubGFzdEluZGV4T2YoJy4nKTsKICAgICAgICAgIC8vIAogICAgICAgICAgaWYgKChzMURvdCA9PSAtMSkgPT0gKHMyRG90ID09IC0xKSkgeyAvLyBib3RoIG9yIG5laXRoZXIKICAgICAgICAgICAgICBzMSA9IHMxLnN1YnN0cmluZyhzMURvdCArIDEpOwogICAgICAgICAgICAgIHMyID0gczIuc3Vic3RyaW5nKHMyRG90ICsgMSk7CiAgICAgICAgICAgICAgcmV0dXJuIHMxLmNvbXBhcmVUbyhzMik7CiAgICAgICAgICB9IGVsc2UgaWYgKHMxRG90ID09IC0xKSB7IC8vIG9ubHkgczIgaGFzIGFuIGV4dGVuc2lvbiwgc28gczEgZ29lcyBmaXJzdAogICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgIH0gZWxzZSB7IC8vIG9ubHkgczEgaGFzIGFuIGV4dGVuc2lvbiwgc28gczEgZ29lcyBzZWNvbmQKICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgIH0KICAgICAgfQogICAgfSk7CiAgIHJldHVybiBhcnJGaWxlczsgIAogIC8qCQogIAlBcnJheXMuc29ydChhcnJGaWxlcywgbmV3IENvbXBhcmF0b3I8U3RyaW5nPigpIHsKCiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyBpbnQgY29tcGFyZShTdHJpbmcgczEsIFN0cmluZyBzMikgewogICAgICAgIGZpbmFsIGludCBzMURvdCA9IHMxLmxhc3RJbmRleE9mKCcuJyk7CiAgICAgICAgZmluYWwgaW50IHMyRG90ID0gczIubGFzdEluZGV4T2YoJy4nKTsKICAgICAgICBpZiAoKHMxRG90ID09IC0xKSA9PSAoczJEb3QgPT0gLTEpKSB7IAogICAgICAgICAgICBzMSA9IHMxLnN1YnN0cmluZyhzMURvdCArIDEpOwogICAgICAgICAgICBzMiA9IHMyLnN1YnN0cmluZyhzMkRvdCArIDEpOwogICAgICAgICAgICByZXR1cm4gczEuY29tcGFyZVRvKHMyKTsKICAgICAgICB9IGVsc2UgaWYgKHMxRG90ID09IC0xKSB7IAogICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfSBlbHNlIHsgCiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KICAgIH0KfSk7CiAgIHJldHVybiBhcnJGaWxlczsKCgoqLwoKICB9ICAKfQ==
[noextension, espacioextension. <-un espacio!, numextension.11txt, extensionsimbolo@email.@com, z.aaa, a.doc, b.doc, ^fake.exe, .htaccess, 11z.html, .nonombre, split.py, b.txt, a.txt, a1.txt, a11.txt, a.zzz]