java求任意个数集合的笛卡尔积,Java中任意集的笛卡尔积
繁華開滿天機(jī)
刪除了兩個(gè)集合的先前解決方案。有關(guān)詳細(xì)信息,請參閱編輯歷史記錄。這里有一種方法可以遞歸地對任意數(shù)量的集合執(zhí)行此操作:public?static?Set>?cartesianProduct(Set>...?sets)?{
????if?(sets.length?
????????throw?new?IllegalArgumentException(
????????????????"Can't?have?a?product?of?fewer?than?two?sets?(got?"?+
????????????????sets.length?+?")");
????return?_cartesianProduct(0,?sets);}private?static?Set>?_cartesianProduct(int?index,?Set>...?sets)?{
????Set>?ret?=?new?HashSet>();
????if?(index?==?sets.length)?{
????????ret.add(new?HashSet());
????}?else?{
????????for?(Object?obj?:?sets[index])?{
????????????for?(Set?set?:?_cartesianProduct(index+1,?sets))?{
????????????????set.add(obj);
????????????????ret.add(set);
????????????}
????????}
????}
????return?ret;}請注意,不可能在返回的集合中保留任何泛型類型信息。如果事先知道您想要的產(chǎn)品有多少集,則可以定義一個(gè)泛型元組來保存這些元素(例如Triple),但是在Java中不可能有任意數(shù)量的泛型參數(shù)。
總結(jié)
以上是生活随笔為你收集整理的java求任意个数集合的笛卡尔积,Java中任意集的笛卡尔积的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java怎么显示qt文件后缀,在qt中执
- 下一篇: java jvm对象_【Java】JVM