import java.util.LinkedList;
import java.util.ArrayList;
import java.util.Random;
public class TestList {
private static Random random = new Random();
public static void main(String[] args){
ArrayList<String> arraylist = new ArrayList<String>();
LinkedList<String> linkedlist = new LinkedList<String>();
for(int i=0;i<50000;i++){
String r = randomString();
arraylist.add(r);
linkedlist.add(r);
}
System.out.println("arraylist size "+arraylist.size());
System.out.println("linkedlist size "+linkedlist.size());
System.out.println("------");
long begin = System.currentTimeMillis();
for(int i=0;i<1000;i++){
for(int j=0;j<arraylist.size();j++){
String s=arraylist.get(j);
}
}
System.out.println("arraylist get(n) time "+(System.currentTimeMillis()-begin));
begin = System.currentTimeMillis();
for(int i=0;i<1000;i++){
for(String s:arraylist){
}
}
System.out.println("arraylist foreach time "+(System.currentTimeMillis()-begin));
begin = System.currentTimeMillis();
for(int i=0;i<1;i++)
for(int j=0;j<linkedlist.size();j++){
String s=linkedlist.get(j);
}
System.out.println("linkedlist get(n) time "+(System.currentTimeMillis()-begin)*1000);
begin = System.currentTimeMillis();
for(int i=0;i<1000;i++)
for(String s:linkedlist){
// linkedlist.get(j);
}
System.out.println("linkedlist foreach time "+(System.currentTimeMillis()-begin));
}
protected static String randomString() {
return Long.toString(random.nextLong(), 36);
}
}
arraylist size 50000
linkedlist size 50000
------
arraylist get(n) time 562
arraylist foreach time 1703
linkedlist get(n) time 1922000
linkedlist foreach time 813
结论linkedlist foreach比arraylist foreach快
分享到:
相关推荐
通过上述分析,我们可以看到迭代器模式在Java中如何实现对集合的灵活访问。这种模式不仅隐藏了集合的内部结构,还允许以不同的方式遍历同一集合,如正向或反向遍历。这种灵活性和封装性是迭代器模式的主要优点,使...
首先,我们需要理解ArrayList在Java中的本质。ArrayList是Java集合框架中的一个重要类,它实现了List接口,用于存储可变大小的有序对象列表。ArrayList通过数组来存储元素,因此可以快速访问任意位置的元素,但插入...
LinkedList 则使用双向链表实现存储,索引数据需要遍历链表,但是插入数据时只需要记录本项的前后项,即使插入数据较快。 在选择何种数据结构时,需要根据实际情况考虑性能和线程安全性等因素。ArrayList 和 ...
在 Java 中,ArrayList 和 LinkedList 是两种常用的集合类,它们各自具有不同的特性和适用场景,主要体现在数据结构、访问效率和操作性能上。 1. 数据结构: - ArrayList 实现了一个动态数组,它内部是一个 Object...
LinkedList内部使用双向链表实现,因此它的遍历速度比ArrayList快,但随机访问性能较差。本实例将探讨如何利用LinkedList以及比较器Comparator实现一个自定义排序的人事信息系统。 首先,我们需要创建一个表示人事...
在Java编程语言中,ArrayList和LinkedList都是集合框架中两种重要的列表实现,它们分别基于不同的数据结构,具有不同的特性和性能特点。以下是对这两个类的详细分析: 1. 数据结构: - ArrayList是基于动态数组的...
在Java编程语言中,LinkedList是一个实现List接口的类,它以双向链表的形式存储元素。这个数据结构允许我们在列表的任何位置进行插入和删除操作,具有O(1)的时间复杂度,这使得LinkedList在需要频繁进行这些操作时比...
在Java中,我们可以使用`LinkedList`作为栈或队列来实现DFS和BFS,`PriorityQueue`来辅助Dijkstra算法,`ArrayList`或`HashSet`结合`DisjointSet`实现Kruskal和Prim算法。`Grapher.jar`可能是用来可视化这些算法运行...
在Java中,我们可以利用LinkedList的addFirst()方法来模拟压栈操作,将新元素添加到链表头部,使用removeFirst()方法来模拟弹栈操作,删除并返回链表头部的元素。以下是一个简单的栈实现: ```java public class ...
- **核心方法**:ArrayList底层基于动态扩展的数组实现,插入和删除元素的速度较快,但随机访问速度快。 - **List与数组互转** - **List转字符串**:可以使用`toString()`方法或者`Arrays.toString()`方法将List...
本篇文章将深入探讨如何在Java中实现多叉树以及其遍历方法。 首先,我们需要定义一个多叉树节点类。这个类通常包含一个数据字段来存储节点值,以及一个ArrayList或LinkedList等动态数组来存储子节点。以下是一个...
在Java编程语言中,LinkedList是一个常用的集合类,它实现了List接口,同时也提供了双向链表的实现。LinkedList不仅可以作为列表使用,还可以被巧妙地利用来构建栈(Stack)和队列(Queue)这两种基本数据结构。在本...
今天,我们将介绍 Java 集合系列中的三个重要成员:LinkedHashMap、LinkedList 和 ArrayList。 LinkedHashMap LinkedHashMap 是 Java 集合系列中的一种哈希表实现,继承自 HashMap。它的主要特点是可以维护元素的...
【Java面试题】ArrayList和LinkedList区别
Java编程语言中的`Map`, `List`, `ArrayList` 和 `LinkedList` 是四个核心的数据结构,它们在实际开发中被广泛使用。了解它们的源码对于深入理解Java集合框架的内部工作原理至关重要,尤其是对初学者而言,这有助于...
今天,我们将深入了解 Java 中的集合类别,包括 ArrayList、Vector、LinkedList 和 Map 等。 ArrayList ArrayList 是一种基于数组的集合类别,它可以存储大量的数据。ArrayList 的特点是:它可以动态地增加或减少...