eclipse 如何解决不同球按集合分类

0md85ypi  于 2022-11-04  发布在  Eclipse
关注(0)|答案(1)|浏览(139)

假设我有一个包含不同颜色气球的容器

  • 例如红、蓝、绿色、红、蓝、红、蓝、绿,
  • 现在,以这样的方式对气球进行分类,首先添加红色气球
  • 然后是蓝色气球,最后是绿色气球。使用适当的集合
oyt4ldly

oyt4ldly1#

只要让你的 * 颜色 * 一个enum

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Balloons {
    enum Colors {RED, BLUE, GREEN}

    public static void main(String[] args) {
        List<Colors> list = new ArrayList<>();
        list.add(Colors.RED);
        list.add(Colors.BLUE);
        list.add(Colors.GREEN);
        list.add(Colors.RED);
        list.add(Colors.BLUE);
        list.add(Colors.RED);
        list.add(Colors.BLUE);
        list.add(Colors.GREEN);
        Collections.sort(list);
        System.out.println(list);
    }
}

运行上面的代码将输出以下内容:

[RED, RED, RED, BLUE, BLUE, BLUE, GREEN, GREEN]

或者,如果您的 colors 是字符串,请定义一个适当的比较器。

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

public class Balloons {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Red");
        list.add("Blue");
        list.add("Green");
        list.add("Red");
        list.add("Blue");
        list.add("Red");
        list.add("Blue");
        list.add("Green");
        Comparator<String> c = (s1, s2) -> {
            if ("Red".equals(s1)) {
                if ("Red".equals(s2)) {
                    return 0;
                }
                return -1;
            }
            else if ("Blue".equals(s1)) {
                if ("Red".equals(s2)) {
                    return 1;
                }
                else if ("Blue".equals(s2)) {
                    return 0;
                }
                return -1;
            }
            else {
                if ("Green".equals(s2)) {
                    return 0;
                }
                return 1;
            }
        };
        list.sort(c);
        System.out.println(list);
    }
}

相关问题