java – 查找所有可能的枚举组合
发布时间:2020-12-15 00:34:39 所属栏目:Java 来源:网络整理
导读:有没有一种有效的方法来查找 Java中多个枚举之间的所有可能组合? 考虑以下三个枚举 – public enum EnumOne { One ("One"),OneMore ("OneMore");}public enum EnumTwo { Two ("Two"),}public enum EnumThree { Three ("Three"),ThreeMore ("ThreeMore");}
有没有一种有效的方法来查找
Java中多个枚举之间的所有可能组合?
考虑以下三个枚举 – public enum EnumOne { One ("One"),OneMore ("OneMore"); } public enum EnumTwo { Two ("Two"),} public enum EnumThree { Three ("Three"),ThreeMore ("ThreeMore"); } 我希望输出产生这些多个枚举之间的所有可能组合,即 {EnumOne.One,EnumTwo.Two,EnumThree.Three},{EnumOne.One,EnumThree.ThreeMore},{EnumOne.OneMore,EnumThree.ThreeMore} 希望找到一种有效的方法来处理它. 谢谢 解决方法
算法的复杂性是O(NxMxK …. xZ),如果我错了,我不知道它是否是一种“有效的方式”….我用它作为一种回溯解决方案
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ProductEnums { public enum EnumOne { One,OneMore; } public enum EnumTwo { Two,} public enum EnumThree { Three,ThreeMore; } public static void main(String[] args) { // pass each values in enums List a = product(EnumOne.values(),EnumTwo.values(),EnumThree.values()); System.out.println(a); } public static List<List<Enum>> product(Enum[]... enums) { return product(new ArrayList<>(Arrays.asList(enums))); } public static List<List<Enum>> product(List<Enum[]> enums) { if (enums.isEmpty()) { //Trivial case of recursive function return new ArrayList<>(); } //remove first element Enum[] myEnums = enums.remove(0); List<List<Enum>> out = new ArrayList<>(); for (Enum e : myEnums) { //call recursive List<List<Enum>> list = product(enums); for (List<Enum> list_enum : list) { //for each list get from recursion adding element e list_enum.add(0,e); out.add(list_enum); } if(list.isEmpty()){ List<Enum> list_enum = new ArrayList<>(); list_enum.add(e); out.add(list_enum); } } enums.add(0,myEnums); //Backtraking return out; } } 结果
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java.lang.NoSuchMethodError:javax.servlet.http.HttpSer
- 错误在Java代码中使用WEKA API:Class Attribute Not Set?
- Java Map.equals()方法:判断Map集合是否与指定的对象相同
- 弹簧 – 没有适用于端点SWS的适配器
- Android 共享参数 SharedPreferences
- java – Html.ImageGetter TextView
- java – 如何将Integer格式化为四个零左的字符串?
- java中的UrlReWriter(url重写)_源码下载
- 详解java开发webservice的几种方式
- java – getChildNodes()返回的DOM NodeList的顺序