Java 8 高效循环

  • 本文关键字:循环 高效 Java java
  • 更新时间 :
  • 英文 :


我有以下代码片段,是否存在任何其他有效的方法可以在java 8中实现相同的目标。我尝试过 lambda 表达式,但在 lambda 函数中分配一些变量时会抛出错误。

public boolean countUsers(UserDetais details){
List<SystemProfile> systemProfileDataList = getSystemProfileData();
int userCountForService = service.getUserCountByService(details.id);
int vpcUsersCount=0;
int internetUsersCount=0;
if (systemProfileDataList != null) {
SystemProfile sysProfile;
Iterator profileItr = systemProfileDataList.iterator();
while (profileItr.hasNext()) {
SystemProfile sysProfile = (SystemProfile) profileItr.next();
if(sysProfile.getName().equalsIgnoreCase(IPConstants.DEFAULT_MAX_USERS)) {
vpcUsersCount = Integer.parseInt(sysProfile.getValue());
if (userCountForService > vpcUsersCount) {
maxUserFlag = true;
break;
}
}else if(sysProfile.getName().equalsIgnoreCase(IPConstants.DEAULT_MAX_USERS_WITH_INTERNET)) {
internetUsersCount = Integer.parseInt(sysProfile.getValue());
if (userCountForService > internetUsersCount) {
maxUserFlag = true;
break;
}
}
}
}

我认为这应该有效:

boolean tooManyUsers = getSystemProfileData().stream()
.anyMatch((SystemProfile s) -> 
s.getName().equalsIgnoreCase(IPConstants.DEFAULT_MAX_USERS)
&& Integer.parseInt(sysProfile.getValue()) < userCountForService
||
s.getName().equalsIgnoreCase(IPConstants.DEAULT_MAX_USERS_WITH_INTERNET)
&& Integer.parseInt(sysProfile.getValue()) < internetUsersCount
);

最新更新