ArrayList 是List的实现类,它实现了List中的所有抽象方法。它在存储数据时,采用的数据结构:数组结构
通过代码分析:底层就是数组结构!
​ArrayList - 图1

常用API


  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import com.woniuxy.java20.exercise.StudentBean;
  4. public class ListStudy {
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. // study01();
  8. study02();
  9. }
  10. private static void study02() {
  11. // TODO Auto-generated method stub
  12. //指定集合中只能存放 String类型的元素
  13. List<String> data = new ArrayList<String>();
  14. data.add("隔壁老王");
  15. data.add("隔壁老张");
  16. data.add("隔壁老宋");
  17. data.add(null);
  18. //判断集合中是否存在某一个元素
  19. System.out.println(data.contains("隔壁老王"));
  20. //移除某一个元素
  21. System.out.println(data.remove("隔壁老王"));
  22. List<StudentBean> stus = new ArrayList<StudentBean>();
  23. stus.add(new StudentBean("xiaoz",98,34,12));
  24. // stus.add("隔壁小蓉");
  25. }
  26. private static void study01() {
  27. // TODO Auto-generated method stub
  28. // 创建一个ArrayList()
  29. List data = new ArrayList();
  30. // 操作集合
  31. String str = "隔壁老张";
  32. // 向集合中添加元素
  33. data.add(str);
  34. StudentBean stu = new StudentBean("刘亦菲", 99, 89, 90);
  35. data.add(stu);
  36. // 允许放置重复元素
  37. data.add(str);
  38. data.add(null);
  39. // 获取(单个单个)
  40. // System.out.println(data.get(0));
  41. // System.out.println(data.get(1));
  42. // System.out.println(data.get(2));
  43. // System.out.println(data.get(3));
  44. // 遍历(1) for 结合下标
  45. // 元素的个数
  46. // int size = data.size();
  47. // for(int i = 0; i < size; i ++) {
  48. //
  49. // System.out.println(data.get(i));
  50. // }
  51. // 遍历(2) foreach
  52. // for (Object object : data) {
  53. // if(object instanceof String) {
  54. // String string = (String)object;
  55. // System.out.println(string);
  56. // }else if(object instanceof StudentBean) {
  57. // StudentBean student = (StudentBean)object;
  58. // System.out.println(student);
  59. // }else {
  60. // System.out.println(object);
  61. // }
  62. // }
  63. // 遍历(3) 迭代器(一种专门用来遍历集合的接口)
  64. // Iterator iterator = data.iterator();
  65. // // 判断是否有下一个元素
  66. // while (iterator.hasNext()) {
  67. //
  68. // Object object = iterator.next();
  69. // //判断元素的类型
  70. // if (object instanceof String) {
  71. // String string = (String) object;
  72. // System.out.println(string);
  73. // } else if (object instanceof StudentBean) {
  74. // StudentBean student = (StudentBean) object;
  75. // System.out.println(student);
  76. // } else {
  77. // System.out.println(object);
  78. // }
  79. //
  80. // //迭代器的主要作用:除了遍历集合之外,还可以对元素进行操作
  81. // iterator.remove();
  82. // }
  83. //
  84. // 根据下标删除元素
  85. data.remove(3);
  86. // 根据元素来完成删除(第1个)
  87. data.remove(str);
  88. // 输出元素的个数
  89. System.out.println(data.size());
  90. }
  91. }

ArralList的扩容方法


new ArrayList() 初始数组容量是0 然后调用add(E e)会自动扩容为 10
当超过10以后,将会发生进一步扩容,扩容是:1.5倍 依次类推……
扩容原理:使用数组的复制原理
​ArrayList - 图2