摘要:在開發(fā)項目中遇到了這樣的一個問題一個里面有這樣的數(shù)據(jù)公司公司公司公司公司公司我要怎么做才能把他們合并為公司公司公司這邊根據(jù)字段的公司名將同一公司的不同數(shù)據(jù)構(gòu)造一起,做法如下總結(jié)雙重遍歷去重雙重遍歷構(gòu)造數(shù)據(jù)存儲構(gòu)造出來的類型根據(jù)項目變化而變化
在開發(fā)項目中遇到了這樣的一個問題:
一個repeatList里面有這樣的數(shù)據(jù):
repeatList=[ {sort="0", company="A公司", value="28432"} {sort="0", company="A公司", value="8263685"} {sort="0", company="A公司", value="1234"} {sort="0", company="B公司", value="2234"} {sort="0", company="B公司", value="567"} {sort="0", company="C公司", value="85789"} ... ]
我要怎么做才能把他們合并為
list=[ {sort="0", company="A公司", value1="28432" , value2="8263685",value3="1234"} {sort="0", company="B公司", value1="2234" , value2="567"} {sort="0", company="C公司", value1="85789"} ]
這邊根據(jù)b字段的公司名將同一公司的不同數(shù)據(jù)構(gòu)造一起,做法如下:
總結(jié):雙重遍歷+去重
(1)雙重遍歷構(gòu)造數(shù)據(jù):
//存儲構(gòu)造出來的list,list類型根據(jù)項目變化而變化,下面的問號都表示相關(guān)的類型,在這里都是要一致的 List> oList = new ArrayList<>(); Map> map = new HashedMap(); //第一層for遍歷 for(? input : repeatList){ List> list = map.get(input.getString("company")); if (list == null) { list = new ArrayList<>(); list.add(input); map.put(input.getString("company"), list); } for (? input2 : repeatList){ if(input.getString("company").equals(input2.getString("company")) && !list.contains(input2)){ list.add(input2); } } /*合并篩選出來的同類數(shù)據(jù),new出一個用來暫時存儲遍歷的數(shù)據(jù)的, 定義在外面,然后for完之后再用oLsit進行add,就會出現(xiàn)同屬性名的值會被后面覆蓋,不同屬性名則補充添加, 所以company和sort就無需變屬性名,但是value就需要變化*/ ? mergePd = new ?(); //第二層for遍歷 for(? x : list){ mergePd.put("company", String.valueOf(x.get("company"))); mergePd.put("sort", String.valueOf(x.get("sort"))); //定義一個標(biāo)志,改變value的屬性名,達到區(qū)分的效果 String sign = 1; mergePd.put("value" + sign, String.valueOf(x.get(value))); sign ++; } oList.add(mergePd); }
經(jīng)過上面的構(gòu)造,會出現(xiàn)這樣的結(jié)果:
oList=[ {sort="0", company="A公司", value1="28432" , value2="8263685",value3="1234"} {sort="0", company="A公司", value1="28432" , value2="8263685",value3="1234"} {sort="0", company="A公司", value1="28432" , value2="8263685",value3="1234"} {sort="0", company="B公司", value1="2234" , value2="567"} {sort="0", company="B公司", value1="2234" , value2="567"} {sort="0", company="C公司", value1="85789"} ]
(2)去重
因為是每條數(shù)據(jù)都遍歷了,所以會出現(xiàn)一定數(shù)量的重復(fù),這時候就需要做去重的步驟,使用java的set方法即可,即在上面方法后面補上:
//set去除outList里面重復(fù)的數(shù)據(jù),保證每條數(shù)據(jù)的唯一性 Set set = new HashSet(oList); oList = new ArrayList(set); List> outList; outList.addAll(oList);
(3)這時候的結(jié)果就是:
outList=[ {sort="0", company="A公司", value1="28432" , value2="8263685",value3="1234"} {sort="0", company="B公司", value1="2234" , value2="567"} {sort="0", company="C公司", value1="85789"} ]
這就達到我們想要的結(jié)果了
希望我的分享能夠幫到大家,若是覺得有用請賜一個贊?。。?!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70884.html
摘要:集合中成員很豐富,常用的集合有,,等。實現(xiàn)接口的集合主要有。集合中不能包含重復(fù)的元素,每個元素必須是唯一的。而以作為實現(xiàn)的構(gòu)造函數(shù)的訪問權(quán)限是默認訪問權(quán)限,即包內(nèi)訪問權(quán)限。與接口不同,它是由一系列鍵值對組成的集合,提供了到的映射。 原文地址 Java集合 Java集合框架:是一種工具類,就像是一個容器可以存儲任意數(shù)量的具有共同屬性的對象。 Java集合中成員很豐富,常用的集合有Arra...
1_(去除ArrayList中重復(fù)字符串元素方式)* A:案例演示 需求:ArrayList去除集合中字符串的重復(fù)值(字符串的內(nèi)容相同) 思路:創(chuàng)建新集合方式 import java.util.ArrayList; import java.util.Iterator; public class ArrayList_1_demo { /* 創(chuàng)建新集合將重復(fù)元素去掉 * 1.明...
摘要:并把最終的隨機數(shù)輸出到控制臺。方法,在集合中如何存儲元素取決于方法的返回值返回,集合中只有一個元素。創(chuàng)建集合對象,傳入比較器。 1_HashSet存儲字符串并遍歷 A:Set集合概述及特點 通過API查看即可 B:案例演示 HashSet存儲字符串并遍歷 import java.util.HashSet; public class Demo1_HashSet { p...
Collection接口 Collection表示一組稱為其元素的對象,Collection接口用于傳遞需要最大通用性的對象集合,例如,按照慣例,所有通用集合實現(xiàn)都有一個帶有Collection參數(shù)的構(gòu)造函數(shù),此構(gòu)造函數(shù)(稱為轉(zhuǎn)換構(gòu)造函數(shù))初始化新集合以包含指定集合中的所有元素,無論給定集合的子接口或?qū)崿F(xiàn)類型如何,換句話說,它允許你轉(zhuǎn)換集合的類型。 例如,假設(shè)你有一個Collection c,它可...
摘要:接口的實現(xiàn)類表示有序的集合元素可以重復(fù),根據(jù)索引來尋找元素,放入其中的元素的存儲順序和放入順序是一致的。包下的集合并發(fā)類與等方法裝飾的類有什么不同先講一下這個線程安全的類。 List接口的實現(xiàn)類 List表示有序的集合(元素可以重復(fù)),根據(jù)索引來尋找元素,放入其中的元素的存儲順序和放入順序是一致的。 ArrayList showImg(http://pd73wtntw.bkt.clou...
閱讀 669·2021-11-23 09:51
閱讀 3337·2021-10-11 10:58
閱讀 15503·2021-09-29 09:47
閱讀 3598·2021-09-01 11:42
閱讀 1301·2019-08-29 16:43
閱讀 1844·2019-08-29 15:37
閱讀 2129·2019-08-29 12:56
閱讀 1737·2019-08-28 18:21