Java 如何使用stream()对带有对象的ArrayList进行排序。sorted()

Java 如何使用stream()对带有对象的ArrayList进行排序。sorted(),java,arraylist,double,java-stream,sorted,Java,Arraylist,Double,Java Stream,Sorted,我在使用stream和sorted对我的ArrayList进行排序时遇到了真正的问题,希望有人能提供帮助。代码使用克罗地亚语,但我不认为这对理解我意思的人来说是个问题 这是ArrayList ArrayList<Publikacija> listaPublikacija = new ArrayList<>(); listaPublikacija.add(prvaKnjiga); listaPublikacija.add(drugaKnjiga); listaPublik

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

这是ArrayList

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

listaPublikacija.add(prvaKnjiga);
listaPublikacija.add(drugaKnjiga);
listaPublikacija.add(prviCasopis);
listaPublikacija.add(drugiCasopis);
感谢任何形式的帮助或建议。。。我已经用不同的方法进行了排序,但是有必要通过流中的排序方法对其进行排序

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

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));
List name=Arrays.asList(“Katka”、“Martin”、“John”);
Object[]sortedNames=names.stream().sorted(String::compareTo.toArray();
System.out.println(“数组:“+Arrays.toString(sortedNames));
这起作用了,答案是泰迪

Publikacija[] sortedArray = listaPublikacija.stream()
   .sorted(Comparators.comparing(Publikacija::getCijena, Double::compareTo)
   .toArray();

第一个方法引用提取标识键,第二个提供比较函数。

下面的代码用于代表“getCijena”对Publikacija对象类型Arraylist进行排序。

集合排序(数据,新比较器(){ 公共整数比较(Publ`在此处输入代码`ikacija s1,Publikacija s2){ 返回s1.getCijena.compareTo(s2.getCijena); } });'
您也可以这样做:

listaPublikacija.stream().sorted(Comparator.comparingDouble(Publikacija::getCijena));

Does
listaPublikacija.stream().sorted(Comparator.comparing(e->e.getCijena())最终得到相同的结果?这可能适用于字符串…我不知道如何使它适用于我的对象
    Object[] sortirano = listaPublikacija.stream().sorted((s1, s2) -> Double.compare(s1.getCijena(), s2.getCijena())).toArray();
Publikacija[] sortedArray = listaPublikacija.stream()
   .sorted(Comparators.comparing(Publikacija::getCijena, Double::compareTo)
   .toArray();
' Collections.sort(data, new Comparator<Publikacija>() {
            public int compare(Publ`enter code here`ikacija s1, Publikacija s2) {

                return s1.getCijena.compareTo(s2.getCijena);
            }
        });'