开发者社区 问答 正文

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

一旦在Java中使用foreach,我就一直试图对过滤列表进行排序,但是我不能。有人可以帮我吗?请。这是我的代码,我应该排序:

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

这是我打印后得到的:

placeat ipsam doloremque possimus sint autem laborum ea expedita
sed ut aut ipsam dolore
beatae ipsam dolores consequatur eum quia inventore sit
eos sapiente ipsam dolores accusamus est et nihil odio
consequatur iure est ullam ipsam dolorem nesciunt

非常感谢你!

问题来源:Stack Overflow

展开
收起
montos 2020-03-25 16:47:07 1065 分享 版权
2 条回答
写回答
取消 提交回答
  • 个人对建模比较关注

    Collotions.sort(list,排序规则)即可

    2020-03-25 17:19:22
    赞同 展开评论
  • 您不能在对列表进行迭代时对其进行排序。因为您无法在不知道列表中的前面的情况下就确定要打印的项目的正确位置。所以

    您必须分两步完成-

    1. 首先过滤列表
    2. 使用比较器对过滤列表进行排序
    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());
    }
    

    回答来源:Stack Overflow

    2020-03-25 16:47:53
    赞同 展开评论