1、用HashTable和HashMap测试插入是10万个数据的速度
Hashtable<Integer,Object> hashtable=new Hashtable<>(); long l = System.currentTimeMillis();//起始时间 Object o=new Object(); Random random=new Random(); for (int i = 0; i < 100000; i++) { hashtable.put(random.nextInt(100),o);//插入数据获取 } long l1 = System.currentTimeMillis();//截止时间 long l11 = l1 - l;//运行时间 System.out.print("Hashtable插入数据的时间为" + l11 + " "); long s = System.currentTimeMillis();//起始时间 Object o1=new Object(); HashMap<Integer,Object> hashmap=new HashMap<Integer, Object>(); Random random1=new Random(); for(int i=0;i<100000;i++){ hashmap.put(random1.nextInt(100),o1); } long s1 = System.currentTimeMillis();//截止时间 long s11 = s1 - s;//运行时间 System.out.print("HashMap插入数据的时间为" + s11 + " ");
2、 对十万个随机数,统计数字重复的次数
Random random=new Random(); ArrayList<Integer> list=new ArrayList<>(); for(int i=0;i<100000;i++){ list.add(random.nextInt(100));//产生1到100中100000个随机数并添加到list中 } //统计出现的次数 hashmap->key:数据本身 value->数据出现的次数 HashMap<Integer,Integer> hashmap=new HashMap<>(); Iterator<Integer> iterator=list.iterator(); while (iterator.hasNext()){ Integer value=iterator.next();//得到list1中的值,也是hashmp中的key Integer num=hashmap.get(value);//get:通过key找value,返回的是key-value键值对的value //这里value相当于key-value中的key if(num==null){ hashmap.put(value,1); }else{ hashmap.put(value,num+1); } } //打印数据 Iterator<Map.Entry<Integer,Integer>> itr = hashmap.entrySet().iterator(); while(itr.hasNext()){ Map.Entry<Integer,Integer> n = itr.next(); Integer key = n.getKey(); Integer value = n.getValue(); System.out.println(key+"="+value); } System.out.println();
3、10万数据找出第一个重复的数据并打印
HashMap<Integer, Integer> hashMap = new HashMap<>(); Random random1 = new Random(); ArrayList<Integer> list=new ArrayList<>(); for (int i = 0; i < 100000; i++) { list.add(random1.nextInt(100)); } HashMap<Integer,Integer> hashmap=new HashMap<>(); Iterator<Integer> iterator=list.iterator(); while(iterator.hasNext()){ Integer value=iterator.next(); Integer num=hashMap.get(value); if(num==null){ hashMap.put(value,1); } else{ // hashMap.put(value,num+1); System.out.println(value); break; } }
4、 10万数据找出出现次数最多的数据并打印
HashMap<Integer,Integer> hashMap = new HashMap<>(); Random random1 = new Random(); ArrayList<Integer> list=new ArrayList<>(); for(int i = 0;i < 100000;i++){ list.add(random1.nextInt(100)); } // list.add(1); // list.add(3); // list.add(4); // list.add(1); // list.add(2); // list.add(1); // list.add(3); HashMap<Integer,Integer> hashmap=new HashMap<>(); Iterator<Integer> iterator=list.iterator(); while(iterator.hasNext()){ Integer val=iterator.next(); Integer num=hashMap.get(val); if(num==null){ hashMap.put(val,1); } else{ hashMap.put(val,num+1); } } //以键值对的形式遍历hashMap Iterator<Map.Entry<Integer,Integer>> iterator1=hashMap.entrySet().iterator(); int count=0;//统计重复次数最多的次数 int data=0;//统计重复次数最多的数字 while (iterator1.hasNext()){ Map.Entry<Integer,Integer>entry=iterator1.next(); Integer key=entry.getKey(); Integer value=entry.getValue(); if(value>count){ Integer cur=entry.getValue(); count=value; data=key; } } System.out.println(data+" "+count);
5、通过对ArrayList和LinkedList对10万个数据分别进行插入、获取操作,比较不同集合操作耗时
ArrayList list1 = new ArrayList(); long l = System.currentTimeMillis();//起始时间 Random random = new Random(); for (int i = 0; i < 100000; i++) { list1.add(random.nextInt(100000));//插入数据获取 } long l1 = System.currentTimeMillis();//截止时间 long l11 = l1 - l;//运行时间 System.out.print("ArrayList插入数据的时间为" + l11 + " "); long t = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) {//获取数据 list1.get(i); } long t1 = System.currentTimeMillis(); long t11 = t1 - t; System.out.println("ArrayList获取数据的时间为" + t11); LinkedList list2 = new LinkedList(); long m = System.currentTimeMillis(); for (int j = 0; j < 100000; j++) { list2.add(j); } long m1 = System.currentTimeMillis(); long m11 = m1 - m; System.out.print("LinkedList插入数据的时间为" + m11 + " "); long n = System.currentTimeMillis(); for (int j = 0; j < 100000; j++) { list2.get(j); } long n1 = System.currentTimeMillis(); long n11= n1 - n; System.out.println("LinkedList获取数据的时间为" + n11);