java - 通过查看枚举将剩余颜色添加到数组列表中

标签 java list enums

我有一个名为 colorList 的列表,它可以包含所有颜色枚举或部分颜色。

public enum Colors {
    RED, BLUE, PINK;        

    private String pickColor(DataKey dataKey) {
        List<Colors> colorsList = dataKey.getColors();
        // add at the end of colorsList
    }
}
  • 如果 colorList 中只有一种颜色,那么我需要从 colorsList 末尾的 Colors 枚举添加剩余的两种颜色。
  • 如果colorList中只有两种颜色,那么我需要从colorsList末尾的Colors枚举添加最后一种颜色。
  • 如果 colorList 具有全部三种颜色,那么我不需要向 colorsList 添加任何内容。

最好的方法是什么?

最佳答案

首先构建可用颜色的列表,从中删除起始颜色的列表,然后将剩余的颜色添加到起始列表,例如。 .

List<Colors> startColors = new ArrayList<>(Arrays.asList(new Colors[]{Colors.RED, Colors.PINK}));
List<Colors> availableColors = new ArrayList<>(Arrays.asList(Colors.values()));
availableColors.removeAll(startColors);
startColors.addAll(availableColors);

System.out.println(startColors);

输出...

[RED, PINK, BLUE]

如果我将 startColors 更改为...

List<Colors> startColors = new ArrayList<>(Arrays.asList(new Colors[]{Colors.PINK}));

它输出...

[PINK, RED, BLUE]

您可以添加一个检查,以查看 startColors 的元素数量是否与 availableList 相同,以及在删除 startColors 后是否相同code> 来自 availableList 如果还有任何可能提高性能的颜色

ps我曾考虑过使用Set,但集合通常是无序的:P

关于java - 通过查看枚举将剩余颜色添加到数组列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35566313/

相关文章:

enums - 跨多种语言统一枚举

java - If 语句中的两个 ArrayList 项

java - 如何在 Java 中解析 UTC 日期/时间

python - 如何删除列表中多余的解析字符?

java - REST:@autowired heavenService 上的 java.lang.NullPointerException

python - 计算集合列表中的多次出现

java - 将 byte[] 转换为 java 中用户定义的类

java - JRE : install vs deploy

python - 为什么 Python 枚举中的可变值是同一个对象?

c++ - 使用枚举作为模板参数 C++