Java集合框架-1

List集合
常见方法
 List 是一个接口,它是最基础的一种集合:它是一种有序列表。它的常用子类包括:

ArrayList:基于动态数组实现,支持随机访问。

LinkedList:基于双向链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedList 还可以用作栈、队列和双向队列。

Vector:和 ArrayList 类似,但它是线程安全的。

Stack:它实现了一个标准的后进先出的栈,是 Vector 的子类。
CopyOnWriteArrayList:一个线程安全的 ArrayList。



import java.util.ArrayList;
import java.util.List;

public class Arraylist_test01 {
    public static void main(String[] args) {
        new ArrayList<>();
        /**
         * new ArrayList<泛型>();
         */
        List<String> arrayList = new ArrayList<String>(); //右边的泛型可不写!

        arrayList.add("wo"); //向集合存入元素 , 但是要和定义的类型一样!
        arrayList.add("ni");
        arrayList.add("ta");

        //ArrayList 底层是基于数组的

        System.out.println(arrayList.size()); //ArrayList.size 方法可以清楚的看到集合中元素的数量! //3


        for (int i = 0; i < arrayList.size(); i++) {
            System.out.println(arrayList.get(0)); //将下标为0的数组循环三次并打印出来!
        }
        System.out.println(arrayList.get(0) + arrayList.get(1) + arrayList.get(2)); // ArrayList.get方法 可以获取到集合中的元素!

//        System.out.println(arrayList.get(0) + arrayList.get(1) + arrayList.get(2) + arrayList.get(3)); //一定会报错的!获取的元素不能超过集合中的元素数量!


        System.out.println("-----------------------------------");
        String remove = arrayList.remove(2);
        System.out.println(remove); // ArrayList.remove 删除元素! //ta

//        System.out.println(arrayList.get(0) + arrayList.get(1) + arrayList.get(2)); // 会报错!因为下标为2的元素已经删除了!
        System.out.println(arrayList.size()); // 2  使用size方法,会得到集合中还有两个元素!!
    }
}





ArrayList.get : 获取集合中的元素
ArrayList.set : 替换集合中的元素
ArrayList.add : 给集合添加元素
ArrayList.remove : 删除集合中的元素
ArrayList.size   : 获取集合中元素的数量



迭代器(Iterator)
在 Java 中,迭代器(Iterator)是一种用于遍历集合(Collection)元素的接口。通过迭代器,可以依次访问集合中的每个元素,而无需了解集合内部的数据结构。使用迭代器可以实现对集合的遍历,并且在遍历的过程中可以进行删除操作,而不会出现并发修改异常。

通常,使用迭代器的基本流程如下:

1. 通过集合的 iterator() 方法获取迭代器对象。
2. 使用 hasNext() 方法判断是否还有下一个元素。
3. 使用 next() 方法获取下一个元素的值。
4. 在需要的时候可以使用 remove() 方法删除元素(可选操作)。

需要注意的是,迭代器是通过集合的 iterator() 方法获取的,不同的集合类(如ArrayList、LinkedList、HashSet等)都实现了iterator()方法,因此可以使用迭代器对不同类型的集合进行遍历操作。


import java.util.ArrayList;
import java.util.Iterator;

public class IteratorExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");

        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
        }
    }
}


List集合特有方法


import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

public class ArrayList_list {
    public static void main(String[] args) {

        //list接口中独有的方法
        Collection<String> collection = new ArrayList<>();
        collection.add("qq01");
        collection.add("qq02");
        collection.add("qq03");
        //在Collenction接口中,是没有get方法的、
        //java多态机制  -- 编译看左边的  而左边是Collection接口,没有get方法,所以运行报错!!

        //如果需要使用get方法,可以将Collection强转为List即可!
        List list = (List) collection;
//        System.out.println(list.get(0)); // 这样就可以使用get方法了!

        list.add("qq123");
//        System.out.println(list.size()); // 4

        list.remove(2);
//        System.out.println(list.size()); //3

        list.set(1, "weixin");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
    /**
     * collection 接口只是提供集合基本的方法
     * 具体实现的话使用List ArratList ,需要重写List接口!
     *
     * 1、List集合下都是有序的接口  根据存放顺序
     * 2、可以允许存放重复数据的,而set接口不允许!
     */
}



List 的特点
  • 使用 List 时,我们要关注 List 接口的规范。List 接口允许我们添加重复的元素,即 List 内部的元素可以重复:
1List<String> list = new ArrayList<>();

2list.add("apple");           // size=1

3list.add("pear");           // size=2

4list.add("apple");           // 允许重复添加元素,size=3

5System.out.println(list.size());                  // 结果为 3

  • List 还允许添加 null
1List<String> list = new ArrayList<>();

2list.add("apple");         // size=1

3list.add(null);               // size=2

4list.add("pear");         // size=3

5String second = list.get(1);                  // null

6System.out.println(second);            // 结果为 3


List集合的概念和特点

1、list集合是有序的,可以精确的控制列表中每个元素的插入位置!可以通过证书索引访问元素,并搜索列表中的元素!!

2、set集合是无序的,不允许存入重复的数据!

List集合的特点
有序:存储和取出的元素顺序一致!
可重复:存储的元素可以重复!


创建 List

除了使用 ArrayListLinkedListJDK9 及其以后的版本中,我们还可以通过 List 接口提供的 of() 方法,根据给定元素快速创建 List

1List<Integer> list = List.of(1, 2, 3);

注意:但是 List.of() 方法不接受 null 值,如果传入 null,会抛出 NullPointerException 异常。


遍历List

1、for循环:和数组类型,我们要遍历一个 List,完全可以用 for 循环根据索引配合 get(int) 方法遍历:

List<String> list = List.of("apple", "pear", "banana");
for (int i = 0; i < list.size(); i++) {
    String s = list.get(i);
    System.out.println(s);
}


2、迭代器:Iterator 对象有两个方法:boolean hasNext() 判断是否有下一个元素,E next() 返回下一个元素。因此,使用 Iterator 遍历 List 代码如下

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值