zoukankan      html  css  js  c++  java
  • linkedlist

    1.ArrayList

      去除ArrayList中重复字符串元素方式

      同一个循环中,不能有两个next()方法,否则数据会丢失

     1     /*
     2          * 需求:去除ArrayList集合重复的元素
     3          * 1.创建一个新集合,
     4          * 2.使用迭代器,把原集合的元素添加进新集合,
     5          * 3.如果新集合中已经有了的元素就不添加了
     6          */
     7         List list = new ArrayList();
     8         list.add("a");
     9         list.add("a");
    10         list.add("b");
    11         list.add("c");
    12         list.add("c");
    13         list.add("c");
    14         
    15         //创建一个新集合
    16         ArrayList alist =new ArrayList(); 
    17         
    18         //迭代器
    19         Iterator it= list.iterator();
    20         while (it.hasNext()) {
    21             
    22             //把原集合转为String类型,一个循环中不能拥有两个next,
    23             String str = (String)it.next();
    24             
    25             //判断新集合中的元素和原集合元素有没有重复的
    26             //如果有重复的就不添加了
    27             if (!(alist.contains(str))) {
    28                 alist.add(str);     
    29             }
    30         }
    31         System.out.println(alist);

      

       去除重复自定义对象

     1         /*
     2          * 去除重复自定义对象
     3          * 重要是的自定义类中要记得重写equals方法
     4          */
     5         ArrayList list = new ArrayList();
     6         list.add(new Student("z",34));
     7         list.add(new Student("ww",43));
     8         list.add(new Student("r",12));
     9         list.add(new Student("z",34));
    10         //创建新集合
    11         ArrayList list2 = new ArrayList<>();
    12         //迭代器
    13         Iterator it = list.iterator();
    14         while(it.hasNext()) {
    15             //向下转型到学生类
    16             Student stu = (Student)it.next();
    17             //没有相同的就添加
    18             if (!(list2.contains(stu))) {
    19                 list2.add(stu);
    20             }
    21         }
    22         System.out.println(list2);




     2.linkedList集合

      

     1     LinkedList linked = new LinkedList();
     2         //添加到集合元素的最前面
     3         linked.addFirst("a");
     4         linked.addFirst("b");
     5         //添加到集合元素的最后面
     6         linked.addLast("c");
     7         linked.addLast("v");
     8         linked.addLast("w");
     9         
    10         System.out.println(linked);
    11         //get()方法获取指定位置的元素
    12         linked.get(3);
    13         //删除第一个元素
    14         linked.removeFirst();
    15         //删除最后一个元素
    16         linked.removeLast();
    17         //获取最后一个元素
    18         linked.getLast();
    19         //获取第一个元素
    20         linked.getFirst();
    21         
    22         
    23         //遍历linkedList集合的迭代器
    24         Iterator it = linked.iterator();
    25         while(it.hasNext()) {
    26             System.out.println(it.next());
    27         }

     

    3.泛型概述和基本使用

      泛型就是限定了集合中存储的数据类型

      好处:提高安全性(将运行期错误转到编译器错误)

         省区强转的麻烦

      泛型的基本使用:<>中放的必须是引用数据类型

      前后的泛型必须一致,或者后面的泛型可以省略不写

       

     1     // 泛型后的遍历迭代
     2         ArrayList list = new ArrayList();
     3         list.add(new Student("z", 34));
     4         list.add(new Student("ww", 43));
     5         list.add(new Student("r", 12));
     6         list.add(new Student("z", 34));
     7 
     8         Iterator<Student> it = list.iterator();
     9         while (it.hasNext()) {
    10             Student str = it.next();
    11 
    12             System.out.println(str);
    13             /*
    14              * 输出结果为
    15              * Student [name=z, age=34] 
    16              * Student [name=ww, age=43] 
    17              * Student [name=r,age=12] 
    18              * Student [name=z, age=34]
    19              */
    20             System.out.println(str.getAge()+ " " + str.getName());
    21             /*
    22              * 输出结果为:
    23              * 43 ww
    24              * 12 r
    25              * 34 z
    26              */
    27         }

     4.foreach的遍历方法

     1 ArrayList<String> arrayList = new ArrayList<>();
     2         arrayList.add("a");
     3         arrayList.add("b");
     4         arrayList.add("c");
     5         // 普通for遍历方式
     6         for (int i = 0; i < arrayList.size(); i++) {
     7             System.out.print(arrayList.get(i) + " ");
     8         }
     9         System.out.println("++++++++++++++");
    10         // 迭代器遍历
    11         Iterator it = arrayList.iterator();
    12         while (it.hasNext()) {
    13             System.out.print(it.next() + " ");
    14         }
    15         System.out.println("-------------------");
    16         // 增强for循环
    17         for (String s : arrayList) {
    18             System.out.print(s + " ");
    19         }

    5.三种迭代方法是否可以删除

      可以使用增强for循环删除

     1         ArrayList<String> arrayList = new ArrayList<>();
     2         arrayList.add("a");
     3         arrayList.add("b");
     4         arrayList.add("g");
     5         // 普通for遍历方式
     6         for(int i=0; i<arrayList.size();i++){
     7             if ("b".equals(arrayList.get(i))) {
     8                 arrayList.remove(i--);
     9             }
    10         }    

     6,集合嵌套

     1         //第一个班级,学习大数据
     2         ArrayList<Student> list2 = new ArrayList();
     3         list2.add(new Student("z", 34));
     4         list2.add(new Student("ww", 43));
     5         list2.add(new Student("r", 12));
     6         list2.add(new Student("z", 34));
     7         //第二个班级学习人工智能
     8         ArrayList<Student> list1 = new ArrayList();
     9         list1.add(new Student("z", 34));
    10         list1.add(new Student("ww", 43));
    11         list1.add(new Student("r", 12));
    12         list1.add(new Student("z", 34));
    13         //这是学校包扩班级
    14         ArrayList<ArrayList<Student>> list = new ArrayList<>();
    15         
    16         //外循环控制班级
    17         for (ArrayList<Student> a : list) {
    18             //内循环控制输出学生
    19             for (Student s : a) {
    20                 System.out.println(s);
    21             }
    22         }

     7.增强for循环

        简化数组和Collection集合的遍历

      格式:

        for(元素数据类型 变量 : 数组或者Collection集合) {

            使用变量即可,该变量就是元素

        }

      简化遍历

     1 for (Student s : a) {

    2   System.out.println(s);

    3 }  

  • 相关阅读:
    Nginx编译安装及平滑升级
    alertmanager 分组,抑制, 静默
    alertmanager 邮件告警&自定义告警模板
    alertmanager 高可用
    程序运行报错UnicodeDecodeError: 'utf8' codec can't decode byte 0x89 in position 0: invalid start byte
    Postman 导入curl 、导出成curl、导出成对应语言代码
    Python 字符串操作(截取/替换/查找/分割)
    In testLogin: indirect fixture *** doesn‘t exist
    postman 传参传递二进制流文件
    开发经验01
  • 原文地址:https://www.cnblogs.com/xsh726/p/11413011.html
Copyright © 2011-2022 走看看