兩個LIST合併問題
前些日子在做專案時,做到兩個大LIST合併的問題,由於時間比較緊沒有時間仔細琢磨一下效率問題。剛好從CSDN的論壇上看到此問題。
有兩個LIST
ArrayList <Integer> list1=new ArrayList <Integer>();
list1.add(13);
list1.add(23);
list1.add(33);
list1.add(43);
list1.add(53);
ArrayList <Integer> list2=new ArrayList <Integer>();
list2.add(14);
list2.add(24);
list2.add(34);
list2.add(43);
list2.add(53);
合併成一個LIST,要求去掉相同的資料。
1:用(Array)List.removeAll/addAll,保留順序;
2:用TreeSet;
3:用hashset;
先談論一下基本使用方法,對基礎方法的一個補充:
先寫個列印方法:
public static void printlnList(ArrayList <Integer> list1,String str){
System.out.print(str+"=>");
//for(int i=0;i<list1.size(); i++){
// System.out.print(list1.get(i)+",");
// }
for(Iterator <Integer> inte=list1.iterator();inte.hasNext();){
System.out.print(inte.next().toString()+",");
}
System.out.println(" ");
}
1:用(Array)List.removeAll/addAll
程式碼:
public static void ArrayListSort(ArrayList <Integer> list1,ArrayList <Integer> list2){
//(Array)List.removeAll/addAll/retainAll
printlnList(list1,"org list1");
printlnList(list2,"org list2");
ArrayList <Integer> newList=new ArrayList <Integer>();
ArrayList <Integer> newList2=new ArrayList <Integer>();
ArrayList <Integer> newList3=new ArrayList <Integer>();
newList2.addAll(list1);
newList3.addAll(list2);
newList2.removeAll(newList3);
newList.addAll(newList2);
newList.addAll(newList3);
printlnList(newList,"newList");
}
開發過程中遇到的問題:
1): 想組合成新的LIST後原始的兩個LIST值不發生改變
ArrayList <Integer> newList2=list1;
newList2.removeAll(list2);
出現問題是list1的值發生改變,操作list1運算就是操作list1;
要達到這種效果是:
ArrayList <Integer> newList2=new ArrayList <Integer>();
newList2.addAll(list1);
2):retainAll是將list1和list2相同的值找出來
list1.retainAll(list2);
2:用hashset;效率比較高
public static void hashListSort(ArrayList <Integer> list1,ArrayList <Integer> list2){
printlnList(list1,"org list1");
printlnList(list2,"org list2");
HashSet hash = new HashSet(list2);
hash.removeAll(list1);
printlnList(list2,"new list2");
list1.addAll(hash);
printlnList(list1,"hashListSort list1");
}
1): 想組合成新的LIST後原始的兩個LIST值不發生改變,可以直接用
HashSet hash = new HashSet(list2);
2):retainAll是將list1和list2相同的值找出來
hash.retainAll(list2);
3:用TreeSet,結果自動從小到大排序;
public static void TreeSetSort(ArrayList <Integer> list1,ArrayList <Integer> list2){
printlnList(list1,"org list1");
printlnList(list2,"org list2");
Set set = new TreeSet();
set.addAll(list1);
set.addAll(list2);
Set set1 = new TreeSet(list1);
Set set2 = new TreeSet(list2);
set1.removeAll(set2);
printlnList(new ArrayList(set1),"TreeSetSort set1");
printlnList(list1,"TreeSetSort list1");
printlnList(new ArrayList(set),"TreeSetSort list");
}
1): 想組合成新的LIST後原始的兩個LIST值不發生改變,可以直接用
Set set1 = new TreeSet(list1);
2):retainAll是將list1和list2相同的值找出來
set1.removeAll(set2);和set1.removeAll(list2)效果一樣;
相關推薦
兩個List合併去重,並排序
一:去重 在工作中,我們經常需要對兩個List進行合併去重,對於List中的資料不同,有不同的處理方式。 1.List中是基礎資料型別 List<Integer> list1 = new ArrayList&
兩個list 合併後去除掉重複removeAll()的,然後再隨機獲取最後list中的 幾個值
public static void test1(){ String s1="1,2,5,3,6,9"; String n1[]=s1.split(","); System.out.println("n1length="+n1.length); String s2="2,3";
將兩個List合併為一個List(並集)+取交集
並集 List<Integer> questionerIdList = new ArrayList<Integer>(); List l1 = sysuserinfMapper
兩個list合併為列表物件
為了將兩個list資料對應起來方便前端進行處理。 需求:第一個圖片對應於第一個視訊作為視訊的封面。 兩個陣列:List< String > imgList, List< String > videoList 視訊多於圖片時不返回視訊 由於前期資料結構設
兩個LIST合併問題
前些日子在做專案時,做到兩個大LIST合併的問題,由於時間比較緊沒有時間仔細琢磨一下效率問題。剛好從CSDN的論壇上看到此問題。 有兩個LIST ArrayList <Integer> list1=new ArrayList <Integ
兩個list合併為一個,缺少的填0,並按其中一個的順序排列
with cte as ( select id,1 level,name from ts_dictionary where parentid=''63" union all select g.id,level +1,g.name from
在python中如何將兩個list合併成一個list,不用for語句
除了直接相加(生成新的list),還有兩種方法(修改其中一個list): 用list的extend方法,L1.extend(L2),該方法將引數L2的全部元素新增到L1的尾部,例如: 1 2 3 4 5 >>> L1 = [1, 2, 3, 4, 5] >
在Java中,如何把兩個String[]合併為一個 與 list 合併有異曲同工之妙
在Java中,如何把兩個String[]合併為一個? 看起來是一個很簡單的問題。但是如何才能把程式碼寫得高效簡潔,卻還是值得思考的。這裡介紹四種方法,請參考選用。 一、apache-commons 這是最簡單的辦法。在apache-commons中,有一個ArrayUtils.addAll
Java 合併兩個list並按照某個欄位排序
public static void main(String[] args) { List<ReplyInfo> replyInfos1 = new ArrayList<>(); ReplyInfo r1 = new ReplyInfo();
Java 兩個list資料根據某個欄位合併
之前遇到一個需求,欄位是每小時那種(2018101208)。然後服務給我資料少了部分。然後我需要自已推算。然後補上沒有那些小時為單位的資料。這裡面也涉及到了自已設計出來資料list是全面的。所有的小時都有。然後把伺服器獲取list根據這個進行對比,補上伺服器沒有的小時數。兩個
c# 將兩個List集合合併
List<int> listA = new List<int> {1,2,3,5,7,9}; List<int> listB = new List<int> {13,4,17,29,2}; List<int> Re
合併兩個list集合並且排序
集合合成的話List<Article> list1 = new ArrayList<Article>(); /*.....新增資料.......*/List<Articl
合併兩個List集合
/第一個list集合 List<String> list_a=new ArrayList<String>(); list_a.add("A"); list_a.add("B");
合併兩個List集合。有相同的元素只存在一次
//第一個list集合 List<String> list_a=new ArrayList<String>(); list_a.add("A"); list_a.a
合併兩個list資料集合
將兩個不同型別的list合併 思路 建立一個總的zlist 然後定義一個物件 分別遍歷兩個list1,list2給定義的物件賦值 並將物件加到定義好的總的zlist中 List<DrawAn
將兩個List根據某個相同欄位來進行合併,排序
業務類簡介: public class ChannelSituation implements Serializable { private Long id; private Date date;//日期
java 合併兩個list 並去重
上程式碼:程式碼寫得糙,但是能表達意思: public static void main(String[] args) throws Exception { List list1 =new ArrayList(); List list2 =new ArrayList();
工具類:關於如何找到兩個List數組中不同的數據的算法!
開發人員 uri print clas 數據結構 blank _id integer public 找到兩個List數組中不同的數據的算法! import java.util.ArrayList;import java.util.HashMap;import java.ut
python判斷兩個list包含關系
nbsp 判斷 span bsp pan 包含 spa num list a = [1,2] b = [1,2,3] c = [0, 1] set(b) > set(a) set(b) > set(c) python判斷兩個list包含關系
python 兩個list 求交集,並集,差集
pytho 列表解析 int __main__ class clas etc intersect run def diff(listA,listB): #求交集的兩種方式 retA = [i for i in listA if i in listB]