我想根据使用 java 8、lambda 表达式的条件获得一个没有重复的列表。假设我有以下代码:
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
public class Main {
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setName(int age) {
this.age = age;
}
}
public static void main(String[] args) {
Main main = …Run Code Online (Sandbox Code Playgroud) 如何在 forEach 中累积?这是我的代码:
public Double accumulate() {
Double accum = 0d;
numbers.stream().forEach(p-> {
// if condition
accum = accum + numbers.getAmount();
// else
accum = accum + numbers.getAmountWithInterest();
});
return accum;
}
Run Code Online (Sandbox Code Playgroud)
也许我应该使用 map 而不是 forEach,我尝试了几件事,但没有奏效。谢谢
我正在尝试创建一个服务来处理不同的付款方式。我想实现策略模式。我想要一个具有不同付款方式的枚举。这是我所拥有的一个例子:
public enum Pay {
CREDITCARD(1) {
@Override
public void pay() {
System.out.println("Payment functionality");
}
},
OTHERMETHOD(2) {
@Override
public void pay() {
System.out.println("Payment functionality");
}
};
private int id;
Payment(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public abstract void pay();
}
Run Code Online (Sandbox Code Playgroud)
在客户端的某个地方:
user.setPay(Pay.CREDITCARD);
user.pay();
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是“pay”方法可能有很多逻辑,所以我想把它放在不同的类中。我可以定义一个这样的接口:
public interface Pay {
void pay();
}
public class CreditCard implements Pay {
@Override
public void pay() { …Run Code Online (Sandbox Code Playgroud)