微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决比较迭代器值和枚举以匹配Java中值的最佳方法

我有一个迭代器,可以使用简单的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



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

解决方法

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

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

public enum ExampleEnum {
    
    ONE("one"),TWO("two"),THREE("three"),FOUR("four");
    
    private String eName;
     
    ExampleEnum(String eName) {
        this.eName = eName;
    }
    
    public String geteName(){
        return eName;
    }
    
    public static Stream<ExampleEnum> stream() {
        return Stream.of(ExampleEnum.values()); 
    }
}

使用简单的ArrayList作为迭代器,将其替换为UserTask Iterator。

String[] arr = {"one","five","six","three","eleven","two","four"};
List<String> arrayList = Arrays.asList(arr);
Iterator<String> iterator = arrayList.iterator();

while(iterator.hasNext()){
    String compare = iterator.next();
    ExampleEnum.stream()
    .filter(d -> d.geteName().equals(compare))
    .forEach(System.out::println);
}

我正在使用Java 8,我想在Java 9中可以更轻松地完成操作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。