國立臺灣科技大學

#請益 #發問 Java 用法

8月8日 21:38
有個中階的語法用法想請教一下各位Java大大, ```java import java.util.Arrays; import java.util.List; import java.util.ArrayList; import java.util.Comparator; import java.util.Collections; class Playground { static class Product { private String name; private Double price; public Product(String name, Double price) { this.name = name; this.price = price; } public String getName() { return name; } public Double getPrice() { return price; } } static class CompareProduct implements Comparator<Product> { public int compare(Product p1, Product p2) { return p1.getPrice().compareTo(p2.getPrice()); } } public static void main(String[ ] args) { List<Product> list = new ArrayList<> (Arrays.asList( new Product("hello", 111.11), new Product("world", 123.45), new Product("hello", 55.55), new Product("moto", 444.44) )); Collections.sort(list, new CompareProduct()); } } ``` 有個需求 在不消耗額外的記憶體的情況下 我希望能夠過濾掉相同的key中比較貴的產品之後再sort // expected output: hello 55.55, world 123.45, moto 444.44 轉成stream後過濾的方法也可以提供一下,感謝。 至於hashmap過濾的方式就不用了,這是我目前知道的方式。
1
留言 15
文章資訊
共 15 則留言
List<Product> list = new ArrayList<>(Arrays.asList( new Product("world", 123.45), new Product("hello", 55.55), new Product("moto", 444.44) )); Collections.sort(list, new CompareProduct());
匿名
這則留言已被刪除
已經刪除的內容就像 Dcard 一樣,錯過是無法再相見的!
國立臺北科技大學
Double price=list.stream() .filter(i->i.getName().equals("hello")).mapToDouble(i->i.getPrice()).max().getAsDouble(); list=list.stream() .filter(i->!i.getName().equals("hello")||!i.getPrice().equals(price)) .sorted(new CompareProduct()).toList(); 還有你compare裡面寫反了,這樣會變成大到小排列
台南應用科技大學
想請問後面那些用法是java的什麼技術啊 我剛學 目前只會解題 想學更進階有辦法做專案的改怎麼學