利用java怎么對集合的子集進行求解?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)專注于興縣企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城建設(shè)。興縣網(wǎng)站建設(shè)公司,為興縣等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)java求解集合的子集的實例
方式1:我們知道子集個數(shù) 2的n次方
比如a,b,c的子集
* 000 0 {}
*001 1 a
*010 2 b
*011 3 a,b (b,a)
*100 4 c
* 101 5 a,c (c,a)
* 110 6 b,c (c,b)
* 111 7 a,b,c
利用二進制的對應(yīng)關(guān)系
@Test public void test1() throws Exception { Set<ArrayList<Integer>> subsets = getSubsets( Arrays.asList(1,2,6)); Set<ArrayList<String>> subsets2 = getSubsets( Arrays.asList("a","b","c")); Set<ArrayList<Character>> subsets3 = getSubsets( Arrays.asList('b','c','d')); System.out.println(subsets); System.out.println(subsets2); System.out.println(subsets3); } //集合接受各種類型數(shù)據(jù) public <T> Set<ArrayList<T>> getSubsets(List<T> subList) { //考慮去重 Set<ArrayList<T>> allsubsets = new LinkedHashSet<>(); int max = 1 << subList.size(); for (int loop = 0; loop < max; loop++) { int index = 0; int temp = loop; ArrayList <T> currentCharList = new ArrayList<T>(); //控制索引 while (temp > 0) { if ((temp & 1) > 0) { currentCharList.add(subList.get(index)); } temp >>= 1; index++; } allsubsets.add(currentCharList); } return allsubsets; }
當(dāng)前文章:利用java怎么對集合的子集進行求解-創(chuàng)新互聯(lián)
本文地址:http://vcdvsql.cn/article0/jisio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、企業(yè)建站、商城網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)建站、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容