如何检查 Currency.getAvailableCurrencies() 是否包含我的字符串值?

How can I check if Currency.getAvailableCurrencies() contain my String value?

我需要检查 Currency.getAvailableCurrencies() 是否包含 我的货币是一个字符串

我试过了

if(Currency.getAvailableCurrencies().contains("my currency")){
  // do something
}

但是那个returnsfalse但是里面包含"my currency"?

Currency.getAvailableCurrencies() returns Set<Currency> doc, so you are trying to check String in Set of Currency objects which returns false always. You need to create Currency object with the input string, Use Currency.getInstance 获取 Currency 实例

if(Currency.getAvailableCurrencies().contains(Currency.getInstance("my currency")))

正如@JBNizet 在评论中所说,方法returns Set of Currency.

您可以使用以下代码段检查您的货币是否可用:

Currency.getAvailableCurrencies().stream()
              .map(Currency::getCurrencyCode)
              .anyMatch(Predicate.isEqual("my currency"));

Currency.getInstance 可能返回的所有内容都在该集合中,因此通过 Currency.getAvailableCurrencies().contains(Currency.getInstance("my currency")) 进行测试基本上毫无意义。

当 运行 这个片段时:

    @Test
    public void currency() {
        final Set<Currency> currencies = Currency.getAvailableCurrencies();
        System.out.println(currencies.size());

        for (char c0 = '0'; c0 <= 'Z'; c0 = inc(c0)) {
            for (char c1 = '0'; c1 <= 'Z'; c1 = inc(c1)) {
                for (char c2 = '0'; c2 <= 'Z'; c2 = inc(c2)) {
                    final String currencyCode = new String(new char[]{c0, c1, c2});
                    try {
                        final Currency currency = Currency.getInstance(currencyCode);

                        if (!currencies.contains(currency)) {
                            System.out.println("found currency that is not available: " + currency);
                        }
                    } catch (Exception e) { }
                }
            }
        }

        System.out.println(Currency.getAvailableCurrencies().size());
    }

    private char inc(char c) {
        if (c == '9') {
            return 'A';
        } else {
            return ++c;
        }
    }

你永远找不到没有的