在java中比较迭代器值和枚举以匹配值的最佳方法

在java中比较迭代器值和枚举以匹配值的最佳方法,java,Java,我有一个迭代器,它通过一个简单的hasNext()函数循环遍历一个值。我还有一个包含特定值的枚举。我希望找到枚举和迭代器之间的所有匹配值 我希望在运行时和空间方面都能以最好的性能做到这一点。 谢谢 参考代码(这是一个简单明了的案例,但可以要求更多代码: Iterator iterator = user.userTasks.iterator(); //loops through current users tasks while(iterator.hasNext()) {

我有一个迭代器,它通过一个简单的hasNext()函数循环遍历一个值。我还有一个包含特定值的枚举。我希望找到枚举和迭代器之间的所有匹配值

我希望在运行时和空间方面都能以最好的性能做到这一点。 谢谢

参考代码(这是一个简单明了的案例,但可以要求更多代码:

Iterator iterator = user.userTasks.iterator(); //loops through current users tasks
        while(iterator.hasNext()) {
            UserTask userTask = (userTask)iterator.next();
            //want to compare userTask above with values from a java enum for any matches




枚举有一个字符串字段,这也是我试图与此迭代器字段匹配的内容。因此,迭代器字段与枚举字段匹配。

根据您的描述,您需要将枚举字段与和迭代器字段匹配

首先让我们创建一个带有字符串字段的枚举

公共枚举示例枚举{
一个(“一”),
两个(“两个”),
三(“三”),
四个(“四个”);
私有字符串名称;
示例枚举(字符串名称){
this.eName=eName;
}
公共字符串geteName(){
返回eName;
}
公共静态流(){
返回Stream.of(例如enum.values());
}
}
在您的案例中,使用简单的ArrayList作为迭代器,将其替换为UserTask迭代器

String[]arr={“一”、“五”、“六”、“三”、“十一”、“二”、“四”};
List arrayList=Arrays.asList(arr);
迭代器迭代器=arrayList.Iterator();
while(iterator.hasNext()){
字符串比较=迭代器.next();
ExampleEnum.stream()示例
.filter(d->d.geteName().equals(比较))
.forEach(System.out::println);
}

我使用的是Java 8,我想Java 9可以更容易地完成。

什么是
UserTask
?是您所说的枚举,还是它只是有一个枚举类型的字段?更一般地说:它与枚举的连接是什么?向我们展示UserTask的代码和enum objectUserTask非常长,但它有一个str字段enum也有一个字符串字段。因此,为了清楚起见,我正在尝试匹配两个都是字符串的字段。我将用enum代码更新这个问题@JoachimSauer@Jack_Frost您需要包括UserTask的缩短版本,该版本只包含相关部分,与枚举相同。请参阅