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