美文网首页
【Java学习】LinkedList、ArrayLis列表的方法

【Java学习】LinkedList、ArrayLis列表的方法

作者: 榆野铃爱 | 来源:发表于2019-08-16 21:17 被阅读0次

心得感悟

虽说今天只学了集合的方法,但真的想要吃透它,工程量还是很大的。上课时听着懵懵懂懂,后面自己又看了几次,再写完简书,才算是掌握了。有些东西的确就是回过头来看就简单很多了,学而不思则罔,思而不学则殆,如果思考很久都不理解,就等敲多了代码再回头看吧。


内容简概

  • 一、集合与数组的差异
  • 二、常见集合分类
  • 三、Collection的方法
  • 四、Collection的遍历方法
  • 五、ArrayList列表的方法
  • 六、Lambda表达式
  • 七、自己创建代码模板

具体内容

一、集合与数组的差异

区别 数组 集合
长度 不可变 可变
顺序 有序(角标) 无序(角标)
元素 可重复 不可重复
元素类型 只能放同种类型 可放不同类型

二、常见集合分类

在这里我们只讲几个常用的列表List,如下图①所示,其他方法如图②暂且不讲。

部分集合类型·图①
全部集合类型·图②
列表、集合和队列·图③

三、Collection的方法

1. 添加元素
2. 删除元素
3. 获取元素个数
4. 判断是否包含一个元素
5. 判断是否为空
6. 判断两个集合是否相同(比较内容)
7. 清空集合

        // 添加元素
         Collection<String> t1 = new ArrayList();
         t1.add("Jack");
         t1.add("Marry");

         //删除元素
         t1.remove("Jack");

         //获取元素个数
         System.out.println(t1.size());

         //判断是否包含一个元素
         if (t1.contains("Marry")) {
             System.out.println("有Marry");
         } else {
             System.out.println("没有Marry");
         }

         //判断是否为空
         if (t1.isEmpty()) {
             System.out.println("是空的");
         }

        //判断两个集合是否相同(比较内容)
         Collection<String> t2 = new ArrayList<>();
         t2.add("Marry");
         t2.add("Jack");
         t2.add("Rose");
         t2.add("Tom");

         if (t1.equals(t2)) {
             System.out.println("相同");
         } else {
             System.out.println("不相同");
         }

         //清空
         t1.clear();

四、Collection的遍历方法

1. Iterator遍历
2. for-each 增强的for循环 快速循环
3. for-i循环遍历

         Collection<String> t2 = new ArrayList<>();
         t2.add("Marry");
         t2.add("Jack");
         t2.add("Rose");
         t2.add("Tom");

        //Iterator遍历
        Iterator iterator = t2.iterator();
         while (iterator.hasNext()) {
             System.out.println(iterator.next());
         }
         while (iterator.next() != null){
             System.out.println(iterator.next());
         }

         //for-each 增强的for循环 快速循环
         for (String obj:t2){
             System.out.println(obj);
         }

         //for-i循环遍历
         for (int i = 0; i < t2.size(); i++){
             System.out.println(((ArrayList<String>) t2).get(i));
         }

五、ArrayList列表的方法

1. ArrayList<>的<>中只能放对象或者包装类

包装类:
在Java中不能定义基本数据类型对象,为了能将基本数据类型视为对象处理,并能连接相关方法,java为每个基本类型都提供包装类。

数据类型 boolean byte char short int long float double
包装类 Boolean Byte Char Short Integer Long Float Double

方法
1. 在末尾添加元素
2. 在指定位置添加元素
3. 访问指定元素
4. 修改一个元素
5. 删除指定位置元素
6. 删除指定对象
7. 清空集合

         ArrayList<Integer> score = new ArrayList<>();
         //在末尾添加元素
         score.add(3);
         //在指定位置添加元素
         score.add(0,1);

         //访问指定元素
         score.get(1);

         //修改一个元素
         score.set(0,0);

         //删除指定位置的元素
         score.remove(0);
         System.out.println(score);

         //删除指定的对象
         score.remove((Integer)2);
         System.out.println(score);

         //清空集合
         score.clear();

8. 将一个集合里面的内容添加到当前集合中
9. 取两个集合的交集
11. 访问某个对象在集合里面的索引
12. 将ArrayList转化为普通数组(toArray)
13. 遍历集合
14. 获取集合某个范围的子集合

         ArrayList<Integer> score = new ArrayList<>();
         ArrayList<Integer> a2 = new ArrayList<>();
         a2.add(1);
         a2.add(2);
         a2.add(3);

         //将一个集合里面的内容添加到当前集合中
         score.addAll(a2);

         ArrayList<Integer> a3 = new ArrayList<>();
         a3.add(1);
         a3.add(2);
         a3.add(1);

        a2.retainAll(a3);//取两个集合的交集
  
         //访问某个对象在集合里面的索引
         System.out.println(a3.indexOf(1));//第一次出现位置,无则返回-1
         System.out.println(a3.lastIndexOf(1));//最后一次出现的位置

         //将ArrayList转化为普通数组
         //法一:
         Integer[] objects = new Integer[a2.size()];
         a2.toArray(objects);
         for (Integer i: objects){
             System.out.println(i);
         }

         //法二:(不常用)
         Object[] objects1 = a2.toArray();
         for (Object i: objects1){
             System.out.print(i);
         }

         //遍历集合
         Iterator iterator1 = a2.iterator();
         while (iterator1.hasNext()){
             System.out.print(iterator1.next());
         }

         //获取集合某个范围的子集合
         List<Integer> integers = a2.subList(0,2);
         System.out.println(integers);*/
         //输出[1,2]
  • 六、Lambda表达式

1. 概念
Lambda 表达式,也可称为闭包,使用 Lambda 表达式可以使代码变的更加简洁紧凑。

2. 格式
(parameters) -> expression 或 (parameters) ->{ statements; }
方法只有一个语句则不用大括号。

3. 简单例子

// 1. 不需要参数,返回值为 1
() -> 1
  
// 2. 接收一个参数(数字类型),返回其3倍的值  
x -> 3 * x  
  
// 3. 接受2个参数(数字),并返回他们的差值  
(x, y) -> x – y  
  
// 4. 接收2个int型整数,返回他们的和  
(int x, int y) -> x + y  
  
// 5. 接受一个 string 对象,并打印
(String s) -> System.out.print(s)

4. 进阶版例子
求出数组里的单数

         ArrayList<Integer> nums = new ArrayList<>();
         nums.add(1);
         nums.add(2);
         nums.add(3);
         nums.add(4);

         //法一:(使用Lambda表达式)
         nums.removeIf(obj -> obj % 2 == 0);
         for (Integer obj:nums){
             if (obj % 2 == 0){
                 nums.remove(obj);
             }
         }

         //法二:(不使用Lambda表达式)
         for (int i = 0; i < nums.size(); i++){
             Integer obj = nums.get(i);
             if (obj % 2 == 0){
                 nums.remove(i);
                 i--;
             }
         }
  • 七、自己创建代码模板

因为我们常会用到for...i循环,而Java中又没有提供这个方法,故我们可以自己向软件中添加代码模板。在此示范Android studio的添加过程。

1.先敲出这样一段代码
2.对模板命名和编写提示
3.点击确认
4.再次编写时,就可看到自己创建的模板
效果如图,不用敲3次循环变量真的很方便

相关文章

  • 【Java学习】LinkedList、ArrayLis列表的方法

    心得感悟 虽说今天只学了集合的方法,但真的想要吃透它,工程量还是很大的。上课时听着懵懵懂懂,后面自己又看了几次,再...

  • LinkedList的局限

    java.util.LinkedList是双向链表,这个大家都知道,比如Java的基础面试题喜欢问ArrayLis...

  • ArrayList/LinkList/Vector

    继承结构 Collection ├------List ├----LinkedList ├----ArrayLis...

  • c# to java

    列表 java中List是接口, 一般使用的实现是ArrayListc#:Listjava:ArrayLis...

  • 泛型数组列表ArrayList

    java.util.ArrayList## ArrayList()构造一个空数组列表。ArrayLis...

  • java 中 linkedList使用

    java 中 linkedList使用 1介绍 LinkedList 是双项列表,实现List 和 Deque...

  • LinkedList源码解析

    1、首先需要清除LinkedList和之前所说的ArrayList的区别 LinkedeList和ArrayLis...

  • Java集合总结

    一:List Java ArrayList源码学习 Java LinkedList源码学习 Java Vector...

  • 2018-06-25

    List和Set比较,各自的子类比较 对比一:Arraylist与LinkedList的比较 1、ArrayLis...

  • Java中高级面试题(1)

    List和Set比较,各自的子类比较 对比一:Arraylist与LinkedList的比较 1、ArrayLis...

网友评论

      本文标题:【Java学习】LinkedList、ArrayLis列表的方法

      本文链接:https://www.haomeiwen.com/subject/mcnfsctx.html