java中LinkedList ArrayList 数组 HashSet 存储数据测试
话不多少,直接上代码
import java.text.SimpleDateFormat;
import java.util.*;
public class testList {
public static void main(String[] args) {
testLinkedList_ArrayList_Array_SetAsInt();
testLinkedList_ArrayList_Array_SetAsString();
testLinkedList_ArrayList_Array_SetAsStringAsToValueOf();
}
public static void testLinkedList_ArrayList_Array_SetAsInt(){
//下面是不用的数据类型循环100W次的测试代码(基本类型和引用类型的差别很大,下面使用的都是int类型)
System.out.println("下面是不同的数据类型循环100W次的测试代码(基本类型和引用类型的差别很大,下面使用的都是int类型)");
long startL= new Date().getTime();
LinkedList<Integer> list = new LinkedList<Integer>();
for (int i = 0; i < 1000000; i++) {
//list.add(String.valueOf(i));
list.add(i);
}
long endL = new Date().getTime();
System.out.println("linkedList:startL:"+startL +" endL:"+endL +" 差值:" +(endL-startL) +"毫秒");
long senStrat = new Date().getTime();
List<Integer> list2 = new ArrayList<Integer>();
for (int i = 0; i < 1000000; i++) {
//list2.add(String.valueOf(i));
list2.add(i);
}
long senEndL = new Date().getTime();
System.out.println("ArrayList:startL:"+senStrat +" endL:"+senEndL +" 差值:" +(senEndL-senStrat) +"毫秒");
// System.out.println("传入的日期与今年的年份差为:" + (year - oldYear));
long thrStrat = new Date().getTime();
int[] arrInt = new int[1000000];
for (int i = 0; i <arrInt.length ; i++) {
// arrInt[i]=String.valueOf(i);
arrInt[i]= i;
}
long thrEndL = new Date().getTime();
System.out.println("int []:startL:"+thrStrat +" endL:"+thrEndL +" 差值:" +(thrEndL-thrStrat) +"毫秒");
long fouStrat = new Date().getTime();
Set<Integer> set = new HashSet<>();
for (int i = 0; i < 1000000; i++) {
set.add(i);
}
long fouEndL = new Date().getTime();
System.out.println("Set:startL:"+fouStrat +" endL:"+fouEndL +" 差值:" +(fouEndL-fouStrat) +"毫秒");
}
public static void testLinkedList_ArrayList_Array_SetAsString(){
//下面是不用的数据类型循环100W次的测试代码(基本类型和引用类型的差别很大,下面使用的都是String类型)
System.out.println("下面是不同的数据类型循环100W次的测试代码(下面使用的都是String类型,为了减少装箱直接使用:dd)");
long startL= new Date().getTime();
LinkedList<String> list = new LinkedList<String>();
for (int i = 0; i < 1000000; i++) {
list.add("dd");
}
long endL = new Date().getTime();
System.out.println("linkedList:startL:"+startL +" endL:"+endL +" 差值:" +(endL-startL) +"毫秒");
long senStrat = new Date().getTime();
List<String> list2 = new ArrayList<String>();
for (int i = 0; i < 1000000; i++) {
//list2.add(String.valueOf(i));
list2.add("dd");
}
long senEndL = new Date().getTime();
System.out.println("ArrayList:startL:"+senStrat +" endL:"+senEndL +" 差值:" +(senEndL-senStrat) +"毫秒");
// System.out.println("传入的日期与今年的年份差为:" + (year - oldYear));
long thrStrat = new Date().getTime();
String[] arrInt = new String[1000000];
for (int i = 0; i <arrInt.length ; i++) {
// arrInt[i]=String.valueOf(i);
arrInt[i]="dd";
}
long thrEndL = new Date().getTime();
System.out.println("String []:startL:"+thrStrat +" endL:"+thrEndL +" 差值:" +(thrEndL-thrStrat) +"毫秒");
long fouStrat = new Date().getTime();
Set<String> set = new HashSet<>();
for (int i = 0; i < 1000000; i++) {
set.add("dd");
}
long fouEndL = new Date().getTime();
System.out.println("Set:startL:"+fouStrat +" endL:"+fouEndL +" 差值:" +(fouEndL-fouStrat) +"毫秒");
}
public static void testLinkedList_ArrayList_Array_SetAsStringAsToValueOf(){
//下面是不用的数据类型循环100W次的测试代码(基本类型和引用类型的差别很大,下面使用的都是String类型)
System.out.println("下面是不同的数据类型循环100W次的测试代码(下面使用的都是String类型,使用装箱String.Values())");
long startL= new Date().getTime();
LinkedList<String> list = new LinkedList<String>();
for (int i = 0; i < 10000000; i++) {
list.add(String.valueOf(i));
}
long endL = new Date().getTime();
System.out.println("linkedList:startL:"+startL +" endL:"+endL +" 差值:" +(endL-startL) +"毫秒");
long senStrat = new Date().getTime();
List<String> list2 = new ArrayList<String>();
for (int i = 0; i < 10000000; i++) {
//list2.add(String.valueOf(i));
list2.add(String.valueOf(i));
}
long senEndL = new Date().getTime();
System.out.println("ArrayList:startL:"+senStrat +" endL:"+senEndL +" 差值:" +(senEndL-senStrat) +"毫秒");
// System.out.println("传入的日期与今年的年份差为:" + (year - oldYear));
long thrStrat = new Date().getTime();
String[] arrInt = new String[10000000];
for (int i = 0; i <arrInt.length ; i++) {
// arrInt[i]=String.valueOf(i);
arrInt[i]=String.valueOf(i);
}
long thrEndL = new Date().getTime();
System.out.println("String []:startL:"+thrStrat +" endL:"+thrEndL +" 差值:" +(thrEndL-thrStrat) +"毫秒");
long fouStrat = new Date().getTime();
Set<String> set = new HashSet<>();
for (int i = 0; i < 10000000; i++) {
set.add(String.valueOf(i));
}
long fouEndL = new Date().getTime();
System.out.println("Set:startL:"+fouStrat +" endL:"+fouEndL +" 差值:" +(fouEndL-fouStrat) +"毫秒");
}
}
执行结果如下:
下面是不同的数据类型循环100W次的测试代码(基本类型和引用类型的差别很大,下面使用的都是int类型)
linkedList:startL:1578973503867 endL:1578973503901 差值:34毫秒
ArrayList:startL:1578973503901 endL:1578973503953 差值:52毫秒
int []:startL:1578973503953 endL:1578973503954 差值:1毫秒
Set:startL:1578973503954 endL:1578973504079 差值:125毫秒
下面是不同的数据类型循环100W次的测试代码(下面使用的都是String类型,为了减少装箱直接使用:dd)
linkedList:startL:1578973504079 endL:1578973504100 差值:21毫秒
ArrayList:startL:1578973504100 endL:1578973504114 差值:14毫秒
String []:startL:1578973504114 endL:1578973504117 差值:3毫秒
Set:startL:1578973504117 endL:1578973504145 差值:28毫秒
下面是不同的数据类型循环100W次的测试代码(下面使用的都是String类型,使用装箱String.Values())
linkedList:startL:1578973504145 endL:1578973504285 差值:140毫秒
ArrayList:startL:1578973504285 endL:1578973504798 差值:513毫秒
String []:startL:1578973504798 endL:1578973504847 差值:49毫秒
Set:startL:1578973504847 endL:1578973505009 差值:162毫秒
java中LinkedList ArrayList 数组 HashSet 存储数据测试的更多相关文章
- 为什么 char 数组比 Java 中的 String 更适合存储密码?
另一个基于 String 的棘手 Java 问题,相信我只有很少的 Java 程序员可以正确回答这个问题.这是一个真正艰难的核心Java面试问题,并且需要对 String 的扎实知识才能回答这个问题. ...
- 在Java中怎样把数组转换为ArrayList?
翻译自:How to Convert Array to ArrayList in Java? 本文分析了Stack Overflow上最热门的的一个问题的答案,提问者获得了很多声望点,使得他得到了在S ...
- 浅谈Java语言中ArrayList和HashSet的区别
Java语言中ArrayList和HashSet的区别 2019-04-10 13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...
- 实现Java中的ArrayList
最近深受轮子哥影响,觉得造一些轮子应该会对自己的技术功底有一定的帮助,就决定先从简单的容器开始实现.废话不多说,就先实现一个Java中的ArrayList. ArrayList是我们在Java中使用非 ...
- 【Java必修课】ArrayList与HashSet的contains方法性能比较(JMH性能测试)
1 简介 在日常开发中,ArrayList和HashSet都是Java中很常用的集合类. ArrayList是List接口最常用的实现类: HashSet则是保存唯一元素Set的实现. 本文主要对两者 ...
- 转载-Java中LinkedList的一些方法—addFirst addFirst getFirst geLast removeFirst removeLast
Java中LinkedList的一些方法—addFirst addFirst getFirst geLast removeFirst removeLast 版权声明:本文为博主原创文章,遵循CC 4. ...
- Java中创建泛型数组
Java中创建泛型数组 使用泛型时,我想很多人肯定尝试过如下的代码,去创建一个泛型数组 T[] array = new T[]; 当我们写出这样的代码时编译器会报Cannot create a gen ...
- java中的基本数据类型一定存储在栈中吗?
首先说明,"java中的基本数据类型一定存储在栈中的吗?”这句话肯定是错误的. 下面让我们一起来分析一下原因: 基本数据类型是放在栈中还是放在堆中,这取决于基本类型在何处声明,下面对数据类型 ...
- 深入理解java中的ArrayList和LinkedList
杂谈最基本数据结构--"线性表": 表结构是一种最基本的数据结构,最常见的实现是数组,几乎在每个程序每一种开发语言中都提供了数组这个顺序存储的线性表结构实现. 什么是线性表? 由0 ...
随机推荐
- Redis OM .NET Redis对象映射框架
Redis OM Redis OM 是 Redis 官方推出的对象映射框架,即:Object Mapping.让开发人员更简单.方便的操作 Redis 数据.Redis 存储的数据抽象为对象映射,支持 ...
- 初识python: 字典
使用数据字典,编写一个多级菜单: 需求:每一级可返回上级,可退出. 多级菜单 #!/user/bin env python # author:Simple-Sir # time:20180915 # ...
- Windows alias 给cmd命令起别名
场景: Linux的alias命令是个非常实用的工具,任何命令通过alias可以精简到很短,比如:alias l='ls -l' Windows也有alias类似的命令,就是:doskey,开启方法也 ...
- 实验 1 :Mininet 源码安装和可视化拓扑
实验 1 : Mininet 源码安装和可视化拓扑工具 一 .实验目的 掌握 Mininet 的源码安装方法和 miniedit 可视化拓扑生成工具. 二 .实验任务 使用源码安装 Mininet 的 ...
- Python常用功能函数系列总结(五)
本节目录 常用函数一:向量距离和相似度计算 常用函数二:pagerank 常用函数三:TF-IDF 常用函数四:关键词提取 常用函数一:向量距离和相似度计算 KL距离.JS距离.余弦距离 # -*- ...
- HTML5元素
1.1结构元素 HTML5定义了一组新的语义化标签,目前主流浏览器均已支持,语义化标签使用标记元素的内容,虽然可以使用原有标签替换,但是它可以简化HTML页面设计,并且也为搜索引擎在抓取和索引网页的时 ...
- python中的sort方法和sorted方法
一.sort()函数 描述 sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数. 语法 sort()方法语法: 1 list.sort(cmp=None, key=No ...
- leetcode 28. 实现 strStr()
问题描述 实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不 ...
- Collection类集
1.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的 ...
- MySql服务器逻辑架构
一.MySql服务器逻辑架构图 每个虚线框都是一层: 第一层:最上层的服务器不是MySql所独有的,大多数基于网络的客户端/服务器工具或者服务都有类似的系统.比如链接处理,授权认证,安 ...