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/

相关文章:

java - log4j冲突?

java - 我想验证网站的菜单栏选项卡而不是单击它们

java - 不能将字符串转换为日期

C++枚举值初始化

swift - 将协议(protocol)扩展限制为单个枚举情况

Java 编译器错误。 For 循环不是语句

C:删除链表

java - 我可以使用双循环来对列表进行排序吗?

python - for循环没有从列表中删除所有项目,解决方案是什么?

java - 枚举静态数组和注解值混淆