Guava Collections 过滤器
Guava Collections filter
我刚开始使用 Guava collections 并尝试为列表编写谓词。我正在使用 Guava 11,因为我在 java 5.
这是我的第一次努力....
public abstract class StatusBean {
public enum Status {GREEN, AMBER, RED, BLUE};
}
public class RegisterReplicationSynchTime {
private Status status = null;
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
}
public class RegisterReplicationSynchTime {
public void doFilter() {
List<RegisterReplicationSynchTime> registerReplicationSynchTimes = dao.getMyList();
Predicate<StatusBean.Status> predicate = new Predicate<StatusBean.Status>() {
public boolean apply(StatusBean.Status status) {
return status != StatusBean.Status.GREEN;
}
};
// !!!! COMPILER DOES NOT LIKE THIS LINE!!!!!!
Collections2.filter(registerReplicationSynchTimes, predicate);
}
}
编译器不喜欢我进行的过滤调用,它给我一个错误,如下所示。
The method filter (Collection<E>,<Predicate<? super E>) in the type
Collections 2 is not applicable for the arguements
(List<RegisterReplicationSynchTime>,Predicate<StatusBean.Status>)
我不确定我需要做什么才能正确处理。有人可以帮帮我吗?
如错误消息所示,List
(RegisterReplicationSynchTime
) 中的元素类型与谓词 (StatusBean.Status
) 处理的元素类型不匹配。
也许您想更改代码以过滤 List<StatusBean.Status>
?
我刚开始使用 Guava collections 并尝试为列表编写谓词。我正在使用 Guava 11,因为我在 java 5.
这是我的第一次努力....
public abstract class StatusBean {
public enum Status {GREEN, AMBER, RED, BLUE};
}
public class RegisterReplicationSynchTime {
private Status status = null;
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
}
public class RegisterReplicationSynchTime {
public void doFilter() {
List<RegisterReplicationSynchTime> registerReplicationSynchTimes = dao.getMyList();
Predicate<StatusBean.Status> predicate = new Predicate<StatusBean.Status>() {
public boolean apply(StatusBean.Status status) {
return status != StatusBean.Status.GREEN;
}
};
// !!!! COMPILER DOES NOT LIKE THIS LINE!!!!!!
Collections2.filter(registerReplicationSynchTimes, predicate);
}
}
编译器不喜欢我进行的过滤调用,它给我一个错误,如下所示。
The method filter (Collection<E>,<Predicate<? super E>) in the type
Collections 2 is not applicable for the arguements
(List<RegisterReplicationSynchTime>,Predicate<StatusBean.Status>)
我不确定我需要做什么才能正确处理。有人可以帮帮我吗?
如错误消息所示,List
(RegisterReplicationSynchTime
) 中的元素类型与谓词 (StatusBean.Status
) 处理的元素类型不匹配。
也许您想更改代码以过滤 List<StatusBean.Status>
?