为了比较 HashSet,LinkedHashSet,TreeSet,ArrayList,LinkedList 的性能,使用如下代码来测试它们加入并删除500000个数据的时间:

package src;

import java.util.ArrayList;
import java.util.List;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.TreeSet; public class Solution { public static void main(String[] args) {
// TODO Auto-generated method stub
Collection<Integer>set1=new HashSet<Integer>();
System.out.println("Time for hash set is "+getTestTime(set1,500000)+" milliseconds"); Collection<Integer>set2=new LinkedHashSet<Integer>();
System.out.println("Time for linked hash set is "+getTestTime(set2, 500000)+" milliseconds"); Collection<Integer>set3=new TreeSet<Integer>();
System.out.println("Time for tree set is "+getTestTime(set3, 500000)+" milliseconds"); Collection<Integer>set4=new ArrayList<Integer>();
System.out.println("Time for arraylist is "+getTestTime(set4, 500000)+" milliseconds"); Collection<Integer>set5=new LinkedList<Integer>();
System.out.println("Time for linked list is "+getTestTime(set5, 500000)+" milliseconds"); System.out.println("\nGame Over!");
} public static long getTestTime(Collection<Integer>c,int size){
long startTime=System.currentTimeMillis();
List<Integer>list=new ArrayList<Integer>();
for(int i=0;i<size;i++){
list.add(i);
} Collections.shuffle(list);
for(int ele:list){
c.add(ele);
} Collections.shuffle(list); for(int ele:list){
c.remove(ele);
} long endTime=System.currentTimeMillis();
return endTime-startTime;
}
}

运行结果如下:

Time for hash set is 372 milliseconds
Time for linked hash set is 404 milliseconds
Time for tree set is 936 milliseconds
Time for arraylist is 200759 milliseconds
Time for linked list is 473436 milliseconds Game Over!

可以看到,速度由快到慢依次是:HashSet,LinkedHashSet,TreeSet,ArrayList,LinkedList。

Java学习笔记(1)----规则集和线性表性能比较的更多相关文章

  1. 数据结构(java版)学习笔记(一)——线性表

    一.线性表的定义 线性表是n(n>=0)个具有相同特性的数据元素的有限序列. 线性表是最简单.最常用的一种数据结构 线性表属于线性结构的一种 如果一个数据元素序列满足: (1)除第一个和最后一个 ...

  2. 数据结构(java版)学习笔记(二)——线性表之顺序表

    顺序表的优点: 随机存取元素方便,根据定位公式容易确定表中每个元素的存储位置,所以要指定第i个结点很方便 简单,直观 顺序表的缺点: 插入和删除结点困难 扩展不灵活,难以确定分配的空间 容易造成浪费 ...

  3. 数据结构(java版)学习笔记(三)——线性表之单链表

    单链表的优点: 长度不固定,可以任意增删. 单链表的缺点: 存储密度小,因为每个数据元素,都需要额外存储一个指向下一元素的指针(双链表则需要两个指针). 要访问特定元素,只能从链表头开始,遍历到该元素 ...

  4. 数据结构(java版)学习笔记(四)——线性表之循环链表

    单向循环链表 PS:有阴影的结点是头结点 概念: 最后一个结点的链域值不为NULL,而是指向头结点 特点: 从表中的任意结点出发,都可以找到表中其他结点 循环条件 p==h 双向链表 概念 链表中的每 ...

  5. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  6. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  7. 20145330第八周《Java学习笔记》

    20145330第八周<Java学习笔记> 第十五章 通用API 通用API 日志:日志对信息安全意义重大,审计.取证.入侵检验等都会用到日志信息 日志API Logger:注意无法使用构 ...

  8. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  9. java学习笔记之基础篇

    java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...

随机推荐

  1. Linux快速查看某条命令的版本和存放的位置(ls -l `which mvn`)

    输入: ls -l `which mvn` 如图:

  2. Visual Studio 跨平台開發實戰(4) - Xamarin Android 基本控制項介紹 (转帖)

    前言 不同於iOS, Xamarin 在Visual Studio中針對Android, 可以直接設計使用者介面. 在本篇教學文章中, 筆者會針對Android的專案目錄結構以及基本控制項進行介紹, ...

  3. net与树莓派的情缘-安装Redis(四)

    在Linux下安装Redis非常简单,具体步骤如下(官网有说明): .下载源码,解压缩后编译源码. $ wget http://download.redis.io/releases/redis-3.0 ...

  4. PowerDesigner16 生成的备注脚本,在sql server 2008 中报“对象名 'sysproperties' 无效”的错误的解决办法

    主要是在建模时我们对表.列增加了些说明注释,而Sql2005之后系统表sysproperties已废弃删除而改用sys.extended_properties所致. 1.修改Table TableCo ...

  5. SymbolTable

    在ClassReader中有两个重要的属性,如下定义: /** A hashtable containing the encountered top-level and member classes, ...

  6. 【Qt开发】QDate类

    QDate为开发者提供日期的类,函数也很丰富 常用方法介绍 1.QDate addDays(qint64 ndays) const 当前日期添加n天,n可以为负 2.QDate addMonths(i ...

  7. ruby **option作为函数参数,map的key必须是符号

    # NEW UNNAMED KEYWORD ARGUMENTSdef new_way(**options)return options[:foo]end# => :new_waynew_way( ...

  8. python2和python3中列表推导式的变量泄露问题

    Python 2.x 中,在列表推导中 for 关键词之后的赋值操作可能会影响列表推导上下文中的同名变量.像下面这个 Python 2.7 控制台对话: Python 2.7.15 (default, ...

  9. TreeMap红黑树

    Java TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的自然顺序(natural ordering),也可以通过构 ...

  10. 图说使用socket建立TCP连接

    在网络应用如火如荼的今天,熟悉TCP/IP网络编程,那是最好不过.如果你并不非常熟悉,不妨花几分钟读一读. 为了帮助快速理解,先上个图,典型的使用socket建立和使用TCP/UDP连接过程为(截图来 ...