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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 光sail 中级黑马   /  2012-4-20 18:44  /  1725 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



•ArrayList:我们可以将其看作是能够自动增长容量的数组。
•利用ArrayList的toArray()返回一个数组。
•Arrays.asList()返回一个列表。
•迭代器(Iterator) 给我们提供了一种通用的方式来访问集合中的元素。
ArrayList类扩展AbstractList并执行List接口。
   ArrayList支持可随需要而增长的动态数组。在Java\中,标准数组是定长的。在数组创建之后,它们\不能被加长或缩短,这也就意味着你必须事先知道数组可以容纳多少元素。但是,你直到运行时才能知道需要多大的数组。为了解决这个问题,类集框架定义了ArrayList 。本质上,ArrayList是对象引用的一个变长数组。也就是说,ArrayList 能够动态地增加或减小其大小。数组列表以一个原始大小被创建。当超过了它的大小,类集自动增大。当对象被删除后,数组就可以缩小
ArrayList有如下的构造函数
    –ArrayList( )
    –ArrayList(Collection c)
    –ArrayList(int capacity)
    –第一个构造函数建立一个空的数组列表。
    –第二个构造函数建立一个数组列表,该数组列表由类集c中的元素初始化。
    –第三个构造函数建立一个数组列表,该数组有指定的初始容量(capacity)。容量是用于存储元素的基本数组的大小。当元素被追加到数组列表上时,容量会自动增加
  1. import java.util.ArrayList;

  2. public class ArrayListTest1
  3. {
  4. public static void main(String[] args)
  5. {
  6. ArrayList arrayList = new ArrayList();

  7. arrayList.add("hello");
  8. arrayList.add("world");
  9. arrayList.add("world");
  10. arrayList.add("welcome");

  11. String s1 = (String)arrayList.get(0);
  12. String s2 = (String)arrayList.get(1);
  13. String s3 = (String)arrayList.get(2);
  14. String s4 = (String)arrayList.get(3);

  15. System.out.println(s1);
  16. System.out.println(s2);
  17. System.out.println(s3);
  18. System.out.println(s4);

  19. System.out.println("------------");

  20. for(int i = 0; i < arrayList.size(); i++)
  21. {
  22. System.out.println(arrayList.get(i));
  23. }


  24. //arrayList.clear();

  25. //System.out.println(arrayList.isEmpty());


  26. arrayList.remove(0);
  27. arrayList.remove("welcome");

  28. System.out.println("------------");

  29. for(int i = 0; i < arrayList.size(); i++)
  30. {
  31. System.out.println(arrayList.get(i));
  32. }

  33. System.out.println("--------------");


  34. arrayList.add("aaa");
  35. arrayList.add("bbb");

  36. System.out.println(arrayList.indexOf("world"));


  37. }
  38. }
复制代码
–使用由toString( )方法提供的默认的转换显示类集的内容,toString( )方法是从AbstractCollection继承下来的。尽管它对简短的例子程序来说是足够了,然而很少使用这种方法去显示实际中的类集的内容。通常编程者会提供自己的输出程序。但在下面的几个例子中,仍将采用由toString( )方法创建的默认输出,尽管当对象被存储在ArrayList对象中时,其容量会自动增加。仍可以通过调用ensureCapacity( )方法来人工地增加ArrayList的容量。如果事先知道将在当前能够容纳的类集中存储许许多多的项时,你可能会想这样做。在开始时,通过一次性 地增加它的容量,就能避免后面的再分配。因为再分配是很花时间的,避免不必要的处理可以改善性能
•ensureCapacity( )方法如下所示
    –void ensureCapacity(int cap)
    –这里,cap是新的容量

•相反地,如果想要减小在ArrayList对象之下 的数组的大小,以便它有正好容纳当前项的大小,可以调用trimToSize( )方法。该方法如下
    –void trimToSize( )
当使用ArrayList时,有时想要获得一个实际的数组,这个数组包含了列表的内容。可以通过调用方法toArray( )来实现它。下面是几个为什么可能想将类集转换成为数组的原因
    –对于特定的操作,可以获得更快的处理时间
    –为了给方法传递数组,而方法不必重载去接收类集
    –为了将新的基于类集的程序与不认识类集的老程序集成
  1. import java.util.ArrayList;

  2. public class ArrayListTest2
  3. {
  4. public static void main(String[] args)
  5. {
  6. ArrayList list = new ArrayList();

  7. list.add("hello");
  8. list.add(new Integer(2));

  9. String str = (String)list.get(0);
  10. Integer in = (Integer)list.get(1);

  11. System.out.println(str);
  12. System.out.println(in.intValue());
  13. }
  14. }
复制代码
  1. import java.util.ArrayList;

  2. public class ArrayListTest3
  3. {
  4. public static void main(String[] args)
  5. {
  6. ArrayList list = new ArrayList();

  7. list.add(new Integer(3));
  8. list.add(new Integer(4));
  9. list.add(new Integer(5));
  10. list.add(new Integer(6));

  11. int sum = 0;

  12. for(int i = 0; i < list.size(); i++)
  13. {
  14. int value = ((Integer)list.get(i)).intValue();

  15. sum += value;
  16. }

  17. System.out.println(sum);
  18. }
  19. }
复制代码
–Arrays.asList()
         •返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直写”到数组。)此方法同Collection.toArray 一起,充当了基于数组的API与基于collection 的API 之间的桥梁












评分

参与人数 1黑马币 +20 收起 理由
职业规划-刘倩老师 + 20 赞一个!

查看全部评分

2 个回复

倒序浏览
总结的很好
回复 使用道具 举报
arrarylist 主要用于对对象的查找不善于增删,因为它在内存中的排列的原因,增删会使得整体移动
但是linkedlist恰恰相反
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马