最近培训是先学习java基础 从最基本的开始学起 因为今天刚刚开博客 要把上周的一些重点内容归纳一下
1.Arraylist常用遍历以及排序
1 importjava.util.ArrayList;2 importjava.util.Collections;3 importjava.util.Comparator;4 importjava.util.Iterator;5
6 public classTest05 {7 public static voidmain(String[] args) {8
9
10 //先new一个Arraylist (泛型不懂得我也没办法)
11 ArrayList arrayList = new ArrayList();12
13
14 //添加元素
15
16 arrayList.add("3");17 arrayList.add("1");18 arrayList.add("2");19 arrayList.add("2");20
21 //利用工具类Collections里面的sort进行排序
22 Collections.sort(arrayList);23
24 //arrayList.size()获取集合长度,arrayList.get()返回在此列表中的指定位置的元素。
25
26 for (int i = 0; i < arrayList.size(); i++) {27 System.out.println(arrayList.get(i));28
29 }30
31
32 //利用迭代器遍历
33 Iterator iterator =arrayList.iterator();34 //利用while循环获取元素
35 while(iterator.hasNext()) {36 String string = iterator.next();//指到下一个元素
37 System.out.println(string);38 }39 System.out.println("--------------------");40
41
42 //利用匿名内部类comparator方法重写,arraylist.sort的排序
43 arrayList.sort(new Comparator() {44 //这是一个匿名内部类
45 @Override46 public intcompare(String o1, String o2) {47 //将String 转为char
48 char a = (char) o1.charAt(0);49 char b = (char) o2.charAt(0);50 return a - b;//返回值自己定 正数 0或者负数会有不同的排序方法
51 }52 });53
54 //foreach循环遍历
55 for(String string : arrayList) {56 System.out.println(string);57 }58 System.out.println("--------------------");59
60 }61 }
2.运行结果
3.总结:
其中有三种遍历方式
1.最后一种利用for循环 跟数组一样获取集合长度,在通过指定位置获取指定位置的元素,这是最基本的,(其中Collections工具类将集合进行排序)
2.利用迭代器,iterator来通过hasNest()查看集合是否含有元素,在通过iterator.next()指定到下一个元素,从何获取元素达到遍历
3.第三种利用foreach循环遍历 其中编写了comparator比较器排序
扩展:
这是利用迭代器删除指定元素
因为正常删除的话,ArrayList是集合,长度不是固定的,所以无法使用for循环来获取元素再删除 因为在你删除前一个值得同时,长度减少了1,并且后一个值向前挪动了一位,此时i会增加1后直接移动两位,以至于丢失删除不到。
而迭代器是通过指针,指向当前数据结构的起始位置。(遍历器的本质就是一个指针对象),不断调用指针对象的next方法,指向下一个元素,直到它指向数据结构的结束位置。
1 //迭代器
2 Iterator iterator =arrayList.iterator();3 //利用while循环获取元素
4 while(iterator.hasNext()) {5 //如果下一个元素值为2,将它移除
6 if(iterator.next().equals("2")) {7 iterator.remove();8 }9 }10 for(String string : arrayList) {11 System.out.println(string);12 }
运行结果:
以上只是一个学习一周的小程序员,有误请及时纠正,让我学习到更深刻的知识。谢谢。