排序Arraylist包含文件路径

时间:2017-03-09 11:44:40

标签: java android arrays sorting arraylist

我需要用文件名对这个数组进行排序,每个项目来自不同的路径。

如何根据文件名对此数组进行排序。

ArrayList<String> sort = new ArrayList<>();

        sort.add("/etc/fest/gerts.png");
        sort.add("/etc/fest/ase.png");
        sort.add("/etc/test/zer.png");
        sort.add("/etc/fest/dse.png");

4 个答案:

答案 0 :(得分:2)

你可以在Java 8中做这样的事情:

在这里,它将首先通过基于最后一个索引“/”对字符串进行子字符串来获取文件名。然后基于相同的排序。

<topic id="topic_1">
   <title>Taking</title>
<body>
  <p>
     <image href="https://tneb.com"/>
  </p>
</body>
   <topic id="topic_2">
      <title>Blood Pressure?</title>
      <body>
         <p>second.</p>
      </body>
   </topic>
</topic>

如果您不在Java 8上。 您可以像这样创建自定义Comparator,然后调用list.sort(Comparator .comparing(s -> s.substring(s.lastIndexOf("/") + 1)) API。

Collections

然后按以下方式调用它:

public class SubstringComparator implements Comparator {
  public int compare(Object o1, Object o2) {
    String s1 = o1.tostring().substring(o1.tostring().lastIndexOf("/") + 1);
    String s2 = o2.tostring().substring(o2.tostring().lastIndexOf("/") + 1);
    return s1.compareTo(s2);
    // or, more concisely:
    // return o1.toString().substring(1).equals(o2.toString().substring(1));
  }
}

答案 1 :(得分:1)

这将仅按文件名排序,忽略父文件夹:

使用JAVA 8

select @fromDate as FromDate
      ,@toDate as ToDate
      ,c.Name as Client
      ,p.Name as Project
      ,@inTime as InTime
      ,@outTime as OutTime
      ,t.TotalTime
from Timelog t
    left join Employee e
        on e.id = t.EmployeeId
    left join Project p
        on p.Id = t.EmployeeProjectId
    left join Client c
        on c.Id = p.ClientId

使用JAVA&lt; 8

sort.sort(Comparator.comparing(o -> new File(o).getName().toUpperCase()));
sort.forEach(System.out::println);

这将产生以下输出:

sort.sort(new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        return new File(o1).getName().toUpperCase().compareTo(new File(o2).getName().toUpperCase());
    }
});
for (String s : sort) {
    System.out.println(s);
}

答案 2 :(得分:0)

您可以使用Collection方法排序

Collections.sort(sort);

答案 3 :(得分:0)

试试这段代码:

Collections.sort(sort);