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 ...
随机推荐
- test_1 计算字符串最后一个单词的长度,单词以空格隔开
题目描述:计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. #coding=utf-8 str = raw_ ...
- ToDesk-----个人免费 极致流畅的远程协助软件
ToDesk https://www.todesk.com/ ToDesk官方下载地址 https://www.todesk.com/ 还支持文件传输,用过许多远程的控制工具,这个自我感觉比向日葵好用 ...
- Java使用poi实现Word添加水印(仅支持后缀为.docx格式)
最近要做电子合同,客户提出为了安全性要将合同中都添加水印,这个之前在网上看到过,貌似使用POI很好加.去网上一搜发现,清一色的只有一篇文章,并且这段代码是用不了的:在文章下边的评论里也发现都说用不了, ...
- Linux环境下的Docker的安装和部署、学习二
DockerFile体系结构(保留字指令) FROM:基础镜像,当前新镜像是基于哪个镜像的 MAINTAINER:镜像维护者的姓名和邮箱地址 RUN:容器构建时需要运行的命令 EXPOSE:当前容器对 ...
- 18张图,详解SpringBoot解析yml全流程
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 前几天的时候,项目里有一个需求,需要一个开关控制代码中是否执行一段逻辑,于是理所当然的在yml文件中配置了一个属性作为开关,再配合nacos就可 ...
- http://dl-ssl.google.com/android上不去解决方案
转:https://blog.csdn.net/j04110414/article/details/44149653/ 一. 更新sdk,遇到了更新下载失败问题: Fetching https://d ...
- ComboBox行高
//行高至少大于20 public static void SetComboBoxLineHeight(ComboBox list, int itemHeight) { list.DropDownSt ...
- Docker环境安装,基本命令集合
一.docker安装 1).卸载旧的安装包 centos7默认安装的docker版本是1.13.1,卸载它,安装新的版本. root用户下,一次把这坨命令复制进去 yum remove docker ...
- ansible roles实践——安装java
[root@master] /etc/ansible$ cat roles/java/tasks/main.yml ---- name: unzip jdk unarchive: src=jdk-8u ...
- JVM之栈、堆、方法区(三)
一.CPU和内存的交互 今天除夕,祝大家新年快乐,其实,我们知道的,我们的CPU跟内存会有非常频繁的交互,因为如果这个频繁的交互是交给我们的磁盘的话,那么随着我们的CPU运转速度越来越快,那么我们的磁 ...