A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王震阳老师   /  2014-6-27 15:15  /  23581 人查看  /  347 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

通过代码测试发现ArrayList集合在对象的增删方法时间远远多于LinkedList集合所花费的时间,但是ArrayList集合在对象的查询搜索方面时间小于LinkedList集合所花费的时间,然后在结合JavaAPI帮组文档我们我们可以得出ArrayList集合底层使用的数据结构是数组,而LinkedList底层使用数据结构是链表。

1.png (56.88 KB, 下载次数: 41)

1.png

JavaCollection1_62.zip

709 Bytes, 下载次数: 100

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
佛说 发表于 2014-12-7 22:57
通过代码测试发现ArrayList集合在对象的增删方法时间远远多于LinkedList集合所花费的时间,但是ArrayList集 ...
  1. import java.util.*;
  2. class JavaCollection1_62
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                
  7.                 ArrayList<Person>al=new ArrayList<Person>();
  8.                 ArrayListAdd(al);
  9.                 ArrayListRemove(al);
  10.                 LinkedList<Person> ll=new LinkedList<Person>();
  11.                 LinkedListAdd(ll);
  12.                 LinkedListRemove(ll);

  13.         }
  14.         public static void ArrayListAdd(ArrayList<Person> al)
  15.         {
  16.                 long timeStart=System.currentTimeMillis();
  17.                 for(int i=0;i<10000;i++)
  18.                 {
  19.            al.add(new Person("xt",12));
  20.                 }
  21.                 long timeEnd=System.currentTimeMillis();
  22.                 long totalTime=timeEnd-timeStart;
  23.                 System.out.println("使用ArrayList添加对象花费的时间:"+totalTime*1000);
  24.         }
  25.         public static void ArrayListRemove(ArrayList<Person> al)
  26.         {
  27.                 long timeStart=System.currentTimeMillis();
  28.                 for(Iterator<Person> it=al.iterator();it.hasNext();)
  29.                 {
  30.                         it.next();
  31.                         it.remove();
  32.                 }
  33.                 long timeEnd=System.currentTimeMillis();
  34.                 long totalTime=timeEnd-timeStart;
  35.                 System.out.println("使用ArrayList删除对象花费的时间:"+totalTime*1000);
  36.         }
  37.         public static void LinkedListAdd(LinkedList<Person> ll)
  38.         {
  39.                 long timeStart=System.currentTimeMillis();
  40.                 for(int i=0;i<10000;i++)
  41.                 {
  42.            ll.addFirst(new Person("aaa",12));
  43.                 }
  44.                 long timeEnd=System.currentTimeMillis();
  45.                 long totalTime=timeEnd-timeStart;
  46.                 System.out.println("使用LinkedList添加对象花费的时间:"+totalTime*1000);
  47.         }
  48.         public static void LinkedListRemove(LinkedList<Person> ll)
  49.         {
  50.                 long timeStart=System.currentTimeMillis();
  51.                 for(Iterator<Person> it=ll.iterator();it.hasNext();)
  52.                 {
  53.                         it.next();
  54.                         it.remove();
  55.                 }
  56.                 long timeEnd=System.currentTimeMillis();
  57.                 long totalTime=timeEnd-timeStart;
  58.                 System.out.println("使用LinkedList删除对象花费的时间:"+totalTime*1000);
  59.         }
  60. }
  61. class Person
  62. {
  63.         private String name;
  64.         private int age;
  65.         Person(String name,int age)
  66.         {
  67.                 this.name=name;
  68.                 this.age=age;
  69.         }
  70.         public String getName()
  71.         {
  72.                 return name;
  73.         }
  74.         public int getAge()
  75.         {
  76.                 return age;
  77.         }
  78. }
复制代码

很给力。
回复 使用道具 举报
本帖最后由 wangzheng406 于 2014-12-9 16:21 编辑

HeimaCollectionDemo.rar

605 Bytes, 下载次数: 99

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报

你写了这么多代码,有没考虑ArrayList和LinkedList底层数据结构的差异?
  1. import java.util.*;
  2. class HeimaCollectionDemo{
  3.         public static void main (String []args){
  4.                 ArrayList a = new ArrayList();
  5.                 LinkedList l = new LinkedList();
  6.                 for(int x = 1 ;x<20000;x++ ){
  7.                         a.add(x+"");
  8.                         l.add(x+"");
  9.                 }
  10.                
  11.                 String x = "15000";
  12.                 int y = 15000;
  13.                 System.out.println("ArrayList不指定角标时候添加元素");
  14.                 add(a,x);
  15.                 System.out.println("ArrayList删除一个不知道角标的元素");
  16.                 del(a,x);
  17.                 System.out.println("ArrayList向指定角标添加元素");
  18.                 add(a,y);
  19.                 System.out.println("ArrayList删除指定角标元素");
  20.                 del(a,y);

  21.                 System.out.println("=========================================");
  22.                 System.out.println("LinkedList不指定角标时候添加元素");
  23.                 add(l,x);
  24.                 System.out.println("LinkedList删除一个不知道角标的元素");
  25.                 del(l,x);
  26.                 System.out.println("LinkedList向指定角标添加元素");
  27.                 add(l,y);
  28.                 System.out.println("LinkedList删除指定角标元素");
  29.                 del(l,y);
  30.                
  31.         }
  32.         public static void del(List list ,int index){
  33.                 if(list instanceof ArrayList        )
  34.                         list = (ArrayList)list;
  35.                 else
  36.                         list = (LinkedList)list;
  37.                 long start = System.nanoTime();                                 
  38.                 list.remove(index);
  39.                 long end = System.nanoTime();
  40.                 System.out.println( "  "+ (end - start));
  41.         }       
  42.         public static void add(List list ,int index){
  43.                 if(list instanceof ArrayList        )
  44.                         list = (ArrayList)list;
  45.                 else
  46.                         list = (LinkedList)list;
  47.                 long start = System.nanoTime();         
  48.                 list.add(index,1);
  49.                 long end = System.nanoTime();
  50.                 System.out.println( "  "+ (end - start));
  51.         }       
  52.        
  53.        
  54.         public static void del(List list ,String index){
  55.                 if(list instanceof ArrayList        )
  56.                         list = (ArrayList)list;
  57.                 else
  58.                         list = (LinkedList)list;
  59.                 long start = System.nanoTime();                                 
  60.                 list.remove(index);
  61.                 long end = System.nanoTime();
  62.                 System.out.println( "  "+ (end - start));
  63.         }       
  64.         public static void add(List list ,String index){
  65.                 if(list instanceof ArrayList        )
  66.                         list = (ArrayList)list;
  67.                 else
  68.                         list = (LinkedList)list;
  69.                 long start = System.nanoTime();
  70.                 list.add(index);
  71.                 long end = System.nanoTime();
  72.                 System.out.println( "  "+ (end - start));
  73.         }       
  74.        
  75.        
  76. }   
复制代码
回复 使用道具 举报
看看是什么题目
回复 使用道具 举报
看题学习
回复 使用道具 举报
阳哥交题:)
回复 使用道具 举报
刚才忘记写上纳秒了

2.png (17 KB, 下载次数: 40)

2.png

Test02.rar

877 Bytes, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
看看题 争分喽
回复 使用道具 举报
看看  看看   看看题
回复 使用道具 举报
回帖领题
回复 使用道具 举报
回帖领题
回复 使用道具 举报
复习巩固, 来看题啦
回复 使用道具 举报
谢谢阳哥,指导

No.2.rar

7.73 KB, 阅读权限: 200, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
领题来了,虽然没有全部完成学习流程,但是学完一个知识点,我就找阳哥领题练习,哈哈。
回复 使用道具 举报
回帖拿题:lol
回复 使用道具 举报
领题来啦
回复 使用道具 举报
刚刚才看过集合的视频,来练下手~
回复 使用道具 举报
回帖领题
回复 使用道具 举报
请查看附件

Exam2.rar

635 Bytes, 阅读权限: 150, 下载次数: 1

评分

参与人数 1技术分 +1 收起 理由
王震阳老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马