JAVA学习——9.Array和ArrayList类

偏执的太偏执、 2023-07-01 08:55 61阅读 0赞

目录

  • Array类
    • Array类常用方法
  • ArrayList

Array类

Arrays 类包含用于操作数组的各种方法(例如排序和搜索)。还包含一个静态工厂,允许将数组转为 List。

Array类常用方法

import java.util.Arrays
在这里插入图片描述
例如:

  1. import java.util.Arrays;
  2. import java.util.Random;
  3. public class ArraysDemo {
  4. public static void main(String[] args) {
  5. int[] arr = new int[10];
  6. //将数组元素都设为9
  7. Arrays.fill(arr, 9);
  8. System.out.println("fill:" + Arrays.toString(arr));
  9. Random random = new Random();
  10. for (int i = 0; i < arr.length; i++) {
  11. //使用100以内的随机数赋值数组
  12. arr[i] = random.nextInt(101);
  13. }
  14. //重新赋值后的数组
  15. System.out.println("重新赋值:" + Arrays.toString(arr));
  16. //将索引为5的元素设为50
  17. arr[5] = 50;
  18. //排序
  19. Arrays.sort(arr);
  20. //排序后的数组
  21. System.out.println("sort排序后:" + Arrays.toString(arr));
  22. //查找50的位置
  23. int i = Arrays.binarySearch(arr, 50);
  24. System.out.println("值为50的元素索引:"+i);
  25. //复制一份新数组
  26. int[] newArr = Arrays.copyOf(arr, arr.length);
  27. //比较
  28. System.out.println("equals:"+Arrays.equals(arr, newArr));
  29. }
  30. }

ArrayList

ArrayList 类实现一个可增长的动态数组,位于 java.util.ArrayList。实现了 List 接口,它可以存储不同类型的对象(包括 null 在内),而数组则只能存放特定数据类型的值。
例如:

  1. /** * 学生类 */
  2. public class Student {
  3. public String id;
  4. public String name;
  5. public Student(String id, String name){
  6. this.id = id;
  7. this.name = name;
  8. }
  9. @Override
  10. public String toString() {
  11. return Student{ +
  12. id=‘” + id + \’ +
  13. “, name=‘” + name + \’ +
  14. ‘}’;
  15. }
  16. }
  17. import java.util.*;
  18. public class ListTest {
  19. //集合后面的<>代表泛型的意思
  20. //泛型是规定了集合元素的类型
  21. /** * 用于存放学生的List */
  22. public List<Student> students;
  23. public ListTest() {
  24. this.students = new ArrayList<Student>();
  25. }
  26. /** * 用于往students中添加学生 */
  27. public void testAdd() {
  28. // 创建一个学生对象,并通过调用add方法,添加到学生管理List中
  29. Student st1 = new Student("1", "张三");
  30. students.add(st1);
  31. // 取出 List中的Student对象 索引为0 也就是第一个
  32. Student temp = students.get(0);
  33. System.out.println("添加了学生:" + temp.id + ":" + temp.name);
  34. Student st2 = new Student("2", "李四");
  35. //添加到list中,插入到索引为0的位置,也就是第一个
  36. students.add(0, st2);
  37. Student temp2 = students.get(0);
  38. System.out.println("添加了学生:" + temp2.id + ":" + temp2.name);
  39. // 对象数组的形式添加
  40. Student[] student = { new Student("3", "王五"), new Student("4", "马六")};
  41. // Arrays类包含用来操作数组(比如排序和搜索)的各种方法,asList() 方法用来返回一个受指定数组支持的固定大小的列表
  42. students.addAll(Arrays.asList(student));
  43. Student temp3 = students.get(2);
  44. Student temp4 = students.get(3);
  45. System.out.println("添加了学生:" + temp3.id + ":" + temp3.name);
  46. System.out.println("添加了学生:" + temp4.id + ":" + temp4.name);
  47. Student[] student2 = { new Student("5", "周七"), new Student("6", "赵八")};
  48. students.addAll(2, Arrays.asList(student2));
  49. Student temp5 = students.get(2);
  50. Student temp6 = students.get(3);
  51. System.out.println("添加了学生:" + temp5.id + ":" + temp5.name);
  52. System.out.println("添加了学生:" + temp6.id + ":" + temp6.name);
  53. }
  54. /** * 取得List中的元素的方法 */
  55. public void testGet() {
  56. int size = students.size();
  57. for (int i = 0; i < size; i++) {
  58. Student st = students.get(i);
  59. System.out.println("学生:" + st.id + ":" + st.name);
  60. }
  61. }
  62. /** * 通过迭代器来遍历 * 迭代器的工作是遍历并选择序列中的对象,Java 中 Iterator 只能单向移动 */
  63. public void testIterator() {
  64. // 通过集合的iterator方法,取得迭代器实例
  65. Iterator<Student> it = students.iterator();
  66. System.out.println(“有如下学生(通过迭代器访问):”);
  67. while (it.hasNext()) {
  68. Student st = it.next();
  69. System.out.println(“学生” + st.id + “:” + st.name);
  70. }
  71. }
  72. /** * 通过for each 方法访问集合元素 * */
  73. public void testForEach() {
  74. System.out.println(“有如下学生(通过for each):");
  75. for (Student obj : students) {
  76. Student st = obj;
  77. System.out.println("学生:" + st.id + ":" + st.name);
  78. }
  79. //使用java8 Steam将学生排序后输出
  80. students.stream()//创建Stream
  81. //通过学生id排序
  82. .sorted(Comparator.comparing(x -> x.id))
  83. //输出
  84. .forEach(System.out::println);
  85. }
  86. /** * 修改List中的元素 * */
  87. public void testModify() {
  88. students.set(4, new Student("3", "吴酒"));
  89. }
  90. /** * 删除List中的元素 * */
  91. public void testRemove() {
  92. Student st = students.get(4);
  93. System.out.println("我是学生:" + st.id + ":" + st.name + ",我即将被删除");
  94. students.remove(st);
  95. System.out.println("成功删除学生!");
  96. testForEach();
  97. }
  98. public static void main(String[] args) {
  99. ListTest lt = new ListTest();
  100. lt.testAdd();
  101. lt.testGet();
  102. lt.testIterator();
  103. lt.testModify();
  104. lt.testForEach();
  105. lt.testRemove();
  106. }
  107. }
  108. $ javac Student.java ListTest.java
  109. $ java ListTest
  110. 添加了学生:1:张三
  111. 添加了学生:2:李四
  112. 添加了学生:3:王五
  113. 添加了学生:4:马六
  114. 添加了学生:5:周七
  115. 添加了学生:6:赵八
  116. 学生:2:李四
  117. 学生:1:张三
  118. 学生:5:周七
  119. 学生:6:赵八
  120. 学生:3:王五
  121. 学生:4:马六
  122. 有如下学生(通过迭代器访问):
  123. 学生2:李四
  124. 学生1:张三
  125. 学生5:周七
  126. 学生6:赵八
  127. 学生3:王五
  128. 学生4:马六
  129. 有如下学生(通过for each):
  130. 学生:2:李四
  131. 学生:1:张三
  132. 学生:5:周七
  133. 学生:6:赵八
  134. 学生:3:吴酒
  135. 学生:4:马六
  136. Student{ id=‘1’, name=‘张三’}
  137. Student{ id=‘2’, name=‘李四’}
  138. Student{ id=‘3’, name=‘吴酒’}
  139. Student{ id=‘4’, name=‘马六’}
  140. Student{ id='5', name='周七'}
  141. Student{ id='6', name='赵八'}
  142. 我是学生:3:吴酒,我即将被删除
  143. 成功删除学生!
  144. 有如下学生(通过for each):
  145. 学生:2:李四
  146. 学生:1:张三
  147. 学生:5:周七
  148. 学生:6:赵八
  149. 学生:4:马六
  150. Student{ id='1', name='张三'}
  151. Student{ id='2', name='李四'}
  152. Student{ id='4', name='马六'}
  153. Student{ id='5', name='周七'}
  154. Student{ id='6', name='赵八'}

在上面的代码中,用到了 Arrays 类, Arrays 包含用来操作数组(比如排序和搜索)的各种方法,asList() 方法用来返回一个受指定数组支持的固定大小的列表。

发表评论

表情:
评论列表 (有 0 条评论,61人围观)

还没有评论,来说两句吧...

相关阅读