Java:如何使用foreach对列表进行排序?

Java:如何使用foreach对列表进行排序?,java,Java,在Java中使用foreach之后,我一直在尝试对过滤列表进行排序,但我做不到。有人能帮我吗?请这是我的代码,我应该分类: List<Photo> photos = getAllPhoto(); String parteTitulo = "ipsam do"; for (Photo aux: photos){ if(aux.getTitle().contains(parteTitulo)){ System.out.println(aux.getTitle())

在Java中使用foreach之后,我一直在尝试对过滤列表进行排序,但我做不到。有人能帮我吗?请这是我的代码,我应该分类:

List<Photo> photos = getAllPhoto();
String parteTitulo = "ipsam do";
for (Photo aux: photos){
    if(aux.getTitle().contains(parteTitulo)){
        System.out.println(aux.getTitle());
    }
}

多谢各位

您不能在迭代列表时对其进行排序。因为在不知道列表中的前一项内容的情况下,您无法决定打印项目的位置是否正确。所以

你必须分两步来做-

  • 首先过滤列表
  • 使用比较器对过滤后的列表进行排序

    List<Photo> photos = getAllPhoto();
    String parteTitulo = "ipsam do";
    
    List<Photo> filteredPhotos = new ArrayList<>();
    
    for (Photo aux : photos) {
        if (aux.getTitle().contains(parteTitulo)) {
            filteredPhotos.add(aux);
        }
    }
    
    filteredPhotos.sort((p1, p2) -> p1.getTitle().compareToIgnoreCase(p2.getTitle()));
    
    for (Photo aux : filteredPhotos) {
        System.out.println(aux.getTitle());
    }
    
    List photos=getAllPhoto();
    字符串parteTitulo=“ipsam do”;
    List filteredPhotos=new ArrayList();
    用于(照片辅助:照片){
    if(aux.getTitle().contains(parteTitulo)){
    filteredPhotos.add(辅助);
    }
    }
    filteredPhotos.sort((p1,p2)->p1.getTitle().CompareTIgnoreCase(p2.getTitle());
    用于(照片辅助:filteredPhotos){
    System.out.println(aux.getTitle());
    }
    

  • 使用“for each”对列表进行排序是不实际的,因为它不允许您修改正在迭代的列表。您需要在列表元素下标上循环。(不仅仅是一个循环)在维基百科中查找排序算法。或者更好的方法是使用Collections.sort。我尝试过使用Collections.sort,但我做不到,你能告诉我如何使用它吗?像这样
    Collections.sort(照片,你的比较器)
    。说真的,看看教程;e、 谢谢,斯蒂芬,我只是个新手。我六周前才开始编程。我读了很多书,但有时会感到困惑。这很公平。新手很难(至少可以说)知道他们的想法行不通。例如,使用“For each”循环进行排序。但我建议在问这样的问题之前,先在谷歌上搜索一下“甲骨文教程排序”。沙哈瓦特,太棒了。非常感谢你的帮助。
    List<Photo> photos = getAllPhoto();
    String parteTitulo = "ipsam do";
    
    List<Photo> filteredPhotos = new ArrayList<>();
    
    for (Photo aux : photos) {
        if (aux.getTitle().contains(parteTitulo)) {
            filteredPhotos.add(aux);
        }
    }
    
    filteredPhotos.sort((p1, p2) -> p1.getTitle().compareToIgnoreCase(p2.getTitle()));
    
    for (Photo aux : filteredPhotos) {
        System.out.println(aux.getTitle());
    }