我有两个 ArrayList userActions
和 actionsToCheck
类型为 enum Action
。
我想检查actionsToCheck
中的所有元素是否存在于userActions
.
以下方法是否足够好或有更好的方法?
private boolean actionsAllowed(ArrayList<Action> userActions, ArrayList<Action> actionsToCheck){
return actionsToCheck.stream().allMatch(action-> actionAllowed(userActions,action));
}
private boolean actionAllowed(ArrayList<Actions> userActions, Action action){
return userActions.stream().anyMatch(userAction -> userAction == action);
}
ArrayList<Actions> userAction=new ArrayList<>();
userAction.add(ADD_USER);
userAction.add(DELETE_USER);
userAction.add(MODIFY_USER);
ArrayList<Actions> actionsToCheck=new ArrayList<>();
actionsToCheck.add(ADD_USER);
actionsToCheck.add(DELETE_USER);
actionsAllowed(userAction,actionsToCheck) //should return true
您可以简单地使用Collection.containsAll(collection)
进行检查。
此外,我建议使用 EnumSet
而不是 ArrayList
.