欢迎来到刘认真的博客

It's not me that's wrong. It's the whole world

java 集合之Arraylist的遍历及排序

最近培训是先学习java基础 从最基本的开始学起 因为今天刚刚开博客 要把上周的一些重点内容归纳一下

1.Arraylist常用遍历以及排序

 1 import java.util.ArrayList;
 2 import java.util.Collections;
 3 import java.util.Comparator;
 4 import java.util.Iterator;
 5 
 6 public class Test05 {
 7 public static void main(String[] args) {
 8 
 9 
10 // 先new一个Arraylist (泛型不懂得我也没办法)
11 ArrayList<String> arrayList = new ArrayList<String>();
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<String> 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<String>() {
44 //这是一个匿名内部类
45 @Override
46 public int compare(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<String> 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 }

 

运行结果:

以上只是一个学习一周的小程序员,有误请及时纠正,让我学习到更深刻的知识。谢谢。

posted @ 2019-06-03 17:10  刘认真  阅读(2381)  评论(0编辑  收藏  举报