如何检查 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;
}
}
你永远找不到没有的
我需要检查 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;
}
}
你永远找不到没有的