java - 如何使用 stream().sorted() 对带有对象的 ArrayList 进行排序

标签 java arraylist double java-stream sorting

我在使用 stream 和 sorted 对我的 ArrayList 进行排序时遇到了真正的麻烦,希望有人能帮忙。该代码使用克罗地亚语单词,但我认为对于理解我的意思的人来说这不是问题。

这是数组列表

ArrayList<Publikacija> listaPublikacija = new ArrayList<>();

listaPublikacija.add(prvaKnjiga);
listaPublikacija.add(drugaKnjiga);
listaPublikacija.add(prviCasopis);
listaPublikacija.add(drugiCasopis);

在我的作业中,我应该通过 double 的 getCijena() 对上面的这些对象进行排序。

这是我得到的最好的,但它仍然没有按应有的方式排序......

listaPublikacija.stream().sorted((s1, s2) -> Double.compare(s1.getCijena(), s2.getCijena()));

感谢任何帮助或建议...我已经用不同的方式进行了排序,但是有必要通过流中的排序方法对其进行排序...

为了更容易理解上面的问题,我将在下面发布类脚本:

public Publikacija(String nazivKnjige, int godinaIzdanja, int brojStr, VrstaPublikacije vrstaPub, double cijenaPoStr, double cijena){
this.nazivKnjige= nazivKnjige;
this.godinaIzdanja = godinaIzdanja;
this.brojStr = brojStr;
this.vrstaPub = vrstaPub;
this.cijenaPoStr = cijenaPoStr;
if(getClass().equals(Casopis.class)){this.cijena= Casopis.CIJENA_PO_PRIMJERKU;}
else this.cijena = provjeraCijene(cijena(brojStr,vrstaPub,cijenaPoStr).doubleValue());

最佳答案

您没有将排序数组的结果存储回集合或数组。流操作不会改变底层集合:

    List<String> names = Arrays.asList("Katka", "Martin", "John");

    Object[] sortedNames = names.stream().sorted(String::compareTo).toArray();

    System.out.println("array: " + Arrays.toString(sortedNames));

关于java - 如何使用 stream().sorted() 对带有对象的 ArrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29265947/

相关文章:

java - 曲面分割着色器上的 GL_INVALID_OPERATION

c# - 如何使用ArrayList的 "CopyTo"方法到另一个ArrayList对象?

C# double.TryParse with InvariantCulture 返回意外结果

java - 为什么在 Java 中允许将 double 转换为 char?

java - 对 C++ 中 ptrdiff_t 的使用感到困惑

java - 无法从资源测试文件夹加载资源

java - 带用户输入的 ArrayList

java - 从 arrayList 索引访问类字段?

java - 如何以这种格式将数据库中的十进制(6,2)值转换为 jformattedtextfield 上的 double 值 **,**

java - 如何在myBatis中使用selectKey一次向2个表插入数据