zoukankan      html  css  js  c++  java
  • 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 }

    运行结果:

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

    作者:刘认真

    -------------------------------------------

    新人只求记录学习生活!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    Hibernate(2)——Hibernate的实现原理总结和对其模仿的demo
    Hibernate(1)——数据访问层的架构模式
    JVM学习(4)——全面总结Java的GC算法和回收机制
    JVM学习(3)——总结Java内存模型
    JVM学习(2)——技术文章里常说的堆,栈,堆栈到底是什么,从os的角度总结
    JVM学习(1)——通过实例总结Java虚拟机的运行机制
    减小内存的占用问题——享元模式和单例模式的对比分析
    继承、组合和接口用法——策略模式复习总结
    软件工程的引入:Scrum开发框架总结
    软件工程里的UML序列图的概念和总结
  • 原文地址:https://www.cnblogs.com/LiuOOP/p/10968743.html
Copyright © 2011-2022 走看看