对于合并两个LSIT方法比较
2009-11-30 18:47
239 查看
对于合并两个LSIT,分别用ARRAYLIST,hashList,treeList方法比较,分别以9999个数字组成的两个不同的LIST,有7000个相同的数字,比较的结果是:
ARRAYLIST 保持以前队列,执行时间是1219ms
hashList 队列顺序随机,执行时间是16m
treeList 队列顺序是从小到大派讯好,执行时间是2390ms
代码是:
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class ArrayListSort {
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");
list1.retainAll(list2);
//printlnList(list1,"list1");
//printlnList(list2,"list2");
* */
long date1=new Date().getTime();
ArrayList <Integer> newList=list2;
list1.removeAll(list2);
newList.addAll(list1);
long date2=new Date().getTime();
System.out.println(newList.size());
System.out.println(date2-date1);
}
public static void ArrayListSort2(ArrayList <Integer> list1,ArrayList <Integer> list2){
long date1=new Date().getTime();
ArrayList <Integer> newList=new ArrayList <Integer> ();
newList.addAll(list2);
newList.removeAll(list1);
newList.addAll(list1);
long date2=new Date().getTime();
System.out.println(newList.size());
System.out.println(date2-date1);
}
public static void hashListSort(ArrayList <Integer> list1,ArrayList <Integer> list2){
long date1=new Date().getTime();
HashSet hash = new HashSet(list2);
hash.removeAll(list1);
//printlnList(list2,"new list2");
list1.addAll(hash);
long date2=new Date().getTime();
System.out.println(list1.size());
System.out.println(date2-date1);
}
public static void TreeSetSort(ArrayList <Integer> list1,ArrayList <Integer> list2){
//printlnList(list1,"org list1");
//printlnList(list2,"org list2");
long date1=new Date().getTime();
Set set = new TreeSet();
set.addAll(list1);
set.removeAll(list2);
set.addAll(list2);
long date2=new Date().getTime();
System.out.println(new ArrayList(set).size());
System.out.println(date2-date1);
//printlnList(new ArrayList(set1),"TreeSetSort set1");
//printlnList(list1,"TreeSetSort list1");
//printlnList(new ArrayList(set),"TreeSetSort list");
}
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(" ");
}
public static void main(String[] ag0){
ArrayList <Integer> list1=new ArrayList <Integer>();
for(int k=1;k<10000;k++){
list1.add(k);
}
ArrayList <Integer> list2=new ArrayList <Integer>();
for(int j=7001;j<17000;j++){
list2.add(j);
}
ArrayList <Integer> list11=new ArrayList <Integer>();
ArrayList <Integer> list22=new ArrayList <Integer>();
list11.addAll(list1);
list22.addAll(list2);
ArrayListSort(list1,list2);
// ArrayListSort2(list11,list22);
hashListSort(list1,list2);
TreeSetSort(list1,list2);
}
}
ARRAYLIST 保持以前队列,执行时间是1219ms
hashList 队列顺序随机,执行时间是16m
treeList 队列顺序是从小到大派讯好,执行时间是2390ms
代码是:
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class ArrayListSort {
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");
list1.retainAll(list2);
//printlnList(list1,"list1");
//printlnList(list2,"list2");
* */
long date1=new Date().getTime();
ArrayList <Integer> newList=list2;
list1.removeAll(list2);
newList.addAll(list1);
long date2=new Date().getTime();
System.out.println(newList.size());
System.out.println(date2-date1);
}
public static void ArrayListSort2(ArrayList <Integer> list1,ArrayList <Integer> list2){
long date1=new Date().getTime();
ArrayList <Integer> newList=new ArrayList <Integer> ();
newList.addAll(list2);
newList.removeAll(list1);
newList.addAll(list1);
long date2=new Date().getTime();
System.out.println(newList.size());
System.out.println(date2-date1);
}
public static void hashListSort(ArrayList <Integer> list1,ArrayList <Integer> list2){
long date1=new Date().getTime();
HashSet hash = new HashSet(list2);
hash.removeAll(list1);
//printlnList(list2,"new list2");
list1.addAll(hash);
long date2=new Date().getTime();
System.out.println(list1.size());
System.out.println(date2-date1);
}
public static void TreeSetSort(ArrayList <Integer> list1,ArrayList <Integer> list2){
//printlnList(list1,"org list1");
//printlnList(list2,"org list2");
long date1=new Date().getTime();
Set set = new TreeSet();
set.addAll(list1);
set.removeAll(list2);
set.addAll(list2);
long date2=new Date().getTime();
System.out.println(new ArrayList(set).size());
System.out.println(date2-date1);
//printlnList(new ArrayList(set1),"TreeSetSort set1");
//printlnList(list1,"TreeSetSort list1");
//printlnList(new ArrayList(set),"TreeSetSort list");
}
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(" ");
}
public static void main(String[] ag0){
ArrayList <Integer> list1=new ArrayList <Integer>();
for(int k=1;k<10000;k++){
list1.add(k);
}
ArrayList <Integer> list2=new ArrayList <Integer>();
for(int j=7001;j<17000;j++){
list2.add(j);
}
ArrayList <Integer> list11=new ArrayList <Integer>();
ArrayList <Integer> list22=new ArrayList <Integer>();
list11.addAll(list1);
list22.addAll(list2);
ArrayListSort(list1,list2);
// ArrayListSort2(list11,list22);
hashListSort(list1,list2);
TreeSetSort(list1,list2);
}
}
相关文章推荐
- Python合并两个字典的常用方法与效率比较
- PHP中2种方法快速地合并数组,你知道吗?合并两个数组有几种方式,试比较它们的异同
- 【转载】Python中如何高效实现两个字典合并,三种方法比较。
- Python 合并两个字典的各种方法以及效率的比较
- Python合并两个字典的常用方法与效率比较
- Python 合并两个字典的各种方法以及效率的比较
- 黑马程序员一在hashSet集合中比较对象需要覆盖的两个方法hashCode(),equlas()
- C语言中比较两个浮点数是否相等的方法,fabs和abs
- 两个dateframe对象的合并方法join
- JS两个数组比较,删除重复值的巧妙方法(推荐)
- 两个ISO合并为一个ISO的方法
- cc150:使用两个栈实现一个队列(两种方法比较)
- 比较两个DataTable中不同的记录,且合并两个DataTable的列显示,有图
- js保留两位小数和两个数比较大小的方法
- [每日积累]两个二位数组合并方法
- 合并两个DataSet的数据内容的方法
- 合并两个DataSet的一种方法
- Java中两个对象的比较 equals()方法和==号的区别
- 比较两个数组中,其中一个数组不包含另一个数组的方法
- Sql Server中三种字符串合并方法的性能比较