gpt4 book ai didi

java - 转换数组并将其复制到列表中

转载 作者:行者123 更新时间:2023-12-04 21:28:48 27 4
gpt4 key购买 nike

需要说明的是,我没有任何问题,也不需要帮助,但我还是想问:

假设我们有一个字符串数组

String[] sarr = new String[]{"POTATO", "TOMATO"};

我们有一个枚举

public enum Food{POTATO, TOMATO, PIZZA}

如果我想检查 sarr 中的所有字符串是否都出现在 Food 中,我会执行以下操作:

ArrayList<String> foodstrings = new ArrayList<>();
Arrays.asList(Food.values()).forEach((in) -> foodstrings.add(in.toString()));
if (!foodstrings.containsAll(Arrays.asList(sarr))) doStuff();

有没有办法用更少的代码行来做到这一点?或者只是一种更优雅的方式?

最佳答案

您想确定数组中的所有元素是否都包含在食物名称列表中。

一种可能的解决方案是将食物名称转换为Set(具有O(1) contains);然后,我们需要判断数组中的所有元素是否都包含在这个集合中:

public static void main(String[] args) {
String[] sarr = new String[]{"POTATO", "TOMATO"};
Set<String> set = Arrays.stream(Food.values()).map(Enum::name).collect(Collectors.toSet());
boolean result = Arrays.stream(sarr).allMatch(set::contains);
}

在您当前的解决方案中,您正在使用 forEach 改变外部变量,这是一种不好的做法。

关于java - 转换数组并将其复制到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35183682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com