Publikacija[] sortedArray = listaPublikacija.stream()
.sorted(Comparators.comparing(Publikacija::getCijena, Double::compareTo)
.toArray();
我在使用流时遇到了麻烦,并对其进行排序以对ArrayList进行排序,希望有人能提供帮助。该代码使用克罗地亚语单词,但是对于理解我的意思的人来说,这不成问题。
这是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());
[您没有将排序后的数组的结果存储回collection或array。 Stream操作不会使基础collection发生突变:
List<String> names = Arrays.asList("Katka", "Martin", "John");
Object[] sortedNames = names.stream().sorted(String::compareTo).toArray();
System.out.println("array: " + Arrays.toString(sortedNames));
Object[] sortirano = listaPublikacija.stream().sorted((s1, s2) -> Double.compare(s1.getCijena(), s2.getCijena())).toArray();
此方法有效,请提供答案
以下代码用于代表“ getCijena”对您的Publikacija对象类型Arraylist进行排序' Collections.sort(data, new Comparator<Publikacija>() {
public int compare(Publ`enter code here`ikacija s1, Publikacija s2) {
return s1.getCijena.compareTo(s2.getCijena);
}
});'
Publikacija[] sortedArray = listaPublikacija.stream()
.sorted(Comparators.comparing(Publikacija::getCijena, Double::compareTo)
.toArray();
第一个方法参考提取标识密钥,第二个提供比较功能。
您也可以通过这种方式做到:
listaPublikacija.stream().sorted(Comparator.comparingDouble(Publikacija::getCijena));
Publikacija[] sortedArray = listaPublikacija.stream()
.sorted(Comparators.comparing(Publikacija::getCijena, Double::compareTo)
.toArray();
您也可以通过这种方式做到: