当前位置: 首页 > 面试题库 >

两个枚举的java比较

甄正信
2023-03-14
问题内容

给出测试代码:

@Test
  public void testEnumAreEqual() {
    for (var someEnum : SomeEnum.values()) {
      Assertions.assertTrue(EnumUtils.isValidEnum(OtherEnum.class, someEnum.name()));
    }
    for (var otherEnum : OtherEnum.values()) {
      Assertions.assertTrue(EnumUtils.isValidEnum(SomeEnum.class, otherEnum.name()));
    }
  }

我想检查两个给定的枚举是否包含相同的值。

也许有更优雅的方式做到这一点?


问题答案:

建立一组名称:

Set<String> someEnumNames = 
    Arrays.stream(SomeEnum.values())
        .map(Enum::name)
        .collect(toSet());

为此OtherEnum(考虑将以上内容提取到方法中)。

然后:

assertEquals(someEnumNames, otherEnumNames);


 类似资料:
  • 问题内容: 有没有办法检查一个枚举值是否大于或等于另一个值? 我想检查错误级别是否为“错误或以上”。 问题答案: 所有Java枚举都实现可比较:http : //java.sun.com/javase/6/docs/api/java/lang/Enum.html 您也可以使用该方法将它们转换为s,然后比较就很简单了。

  • 因为枚举成员不是有序的,所以它们只支持通过标识(identity) 和相等性 (equality) 进行比较。下面来看看 == 和 is 的使用: #!/usr/bin/env python3 # -*- coding: UTF-8 -*- from enum import Enum class User(Enum): Twowater = 98 Liangdianshui

  • 实现后缀计算器,需要检查运算符的优先级是否低于另一个运算符。以下是我到目前为止所拥有的: 我尝试了许多不同的方法来检查传入的字符的优先级,但都没有用。有没有简单的方法来比较一个枚举的两个值?我需要创建一个循环吗?

  • 问题内容: 我知道Java枚举被编译为具有私有构造函数和一堆公共静态成员的类。比较给定枚举的两个成员时,我一直使用,例如 但是,我刚遇到一些使用equals运算符==而不是.equals()的代码: 我应该使用哪个运算符? 问题答案: 两者在技术上都是正确的。如果你查看源代码,它只是顺应了。 我使用,但是,这将是null安全的。

  • 我有两个枚举,它们实现了如下相同的接口:- 名为SystemA和SystemB的两个枚举正在实现此接口。 我想要像这样应用getConfigFunction:- 但它会抛出编译时错误,因为形成的流的类型为:Config[]。所以我尝试了以下修改:- 但这也失败了,因为我还需要修改forEach部分。有人能帮忙吗?我该如何修改forEach部分,或者我该如何使用map()/flatmap()函数,这

  • 主要内容:声明枚举,枚举类,为枚举添加方法,EnumMap 与 EnumSet枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型。 在 JDK 1.5 之前没有枚举类型,那时候一般用接口常量来替代。而使用 Java 枚举类型 enum 可以更贴近地表示这种常量。 声明枚举 声明枚举时必须使用 enu