Java 使用流不';从枚举中收集值;行不通
我想要一个包含枚举中几乎所有值的列表。我试图在stream的帮助下做到这一点,但我不知道为什么它不起作用 例如,我尝试这样做:Java 使用流不';从枚举中收集值;行不通,java,java-8,enums,java-stream,Java,Java 8,Enums,Java Stream,我想要一个包含枚举中几乎所有值的列表。我试图在stream的帮助下做到这一点,但我不知道为什么它不起作用 例如,我尝试这样做: SortingType.stream() // .filter(d -> !d.getName().equals(SortingType.UNKNOWN.getName())) .forEach(u -> { sortingList.add(createSortingBE(lo
SortingType.stream() //
.filter(d -> !d.getName().equals(SortingType.UNKNOWN.getName()))
.forEach(u -> {
sortingList.add(createSortingBE(locale, u, u.name().equalsIgnoreCase(sortingType.name())));
});
.stream()显示为红色,我收到此消息:“无法解析'SortingType'中的方法'stream'”
分类类型
public enum SortingType {
DISTANCE("DISTANCE", 101, "Sorting POIs by distance"),
PRICE("PRICE", 104, "Sorting POIS by price"),
UNKNOWN("UNKNOWN", 000, "Unknown sorting option");
private String name;
private Integer identifier;
private String description;
SortingType(final String name, final Integer identifier, final String description) {
this.name = name;
this.identifier = identifier;
this.description = description;
}
public static SortingType getByName(final String name) {
return Stream.of(values()).filter(u -> u.name.equalsIgnoreCase(name)).findFirst().orElse(SortingType.UNKNOWN);
}
public static SortingType getByIdentifier(final Integer identifier) {
return Stream.of(values()).filter(u -> u.identifier.equals(identifier)).findFirst().orElse(SortingType.UNKNOWN);
}
public String getDescription() {
return description;
}
public Integer getIdentifier() {
return identifier;
}
public String getName() {
return name;
}
您只需像这样添加
stream()
方法
public enum SortingType {
// .....
public static Stream<SortingType> stream() {
return Stream.of(values());
}
}
公共枚举排序类型{
// .....
公共静态流(){
返回流.of(value());
}
}
使用排序类型.值()
。。。干杯,因为在排序类型中没有stream()
方法。您正确发布的代码使用了两次Stream.of(values())
,那么问题发生在哪里?除此之外,您的getName()
方法已经过时,enum
类型已经有了一个name()
方法,该方法返回常量的名称,还有类似的谓词!d、 getName().equals(SortingType.UNKNOWN.getName())
不必要地复杂,只需使用d!=排序类型。未知
。更奇怪的是u.name().equalsIgnoreCase(sortingType.name())
,因为它表明你知道name()
,但是为什么equalsIgnoreCase
而不是equals
?@new\u在编程中读了上面所写的美女@holger。还要检查java文档中的Enum.class
。祝你好运。你可能想要:EnumSet.complementOf(EnumSet.of(SortingType.UNKNOWN)).stream()
@new\u在\u编程中,我建议先阅读并理解一下API,而不是仅仅复制一些代码并进行尝试和错误更改。