Java--集合01

1.集合与数组

  • 都是容器,可以存储多个数据
  • 数组可以存储基本数据类型和引用数据类型,长度不可变
  • 集合只能存储引用数据类型,长度可变
  • 集合如果要存基本数据类型,需要存对应的包装类

集合类体系结构图

2.Collection集合

是单列集合的顶层接口,表示一组对象,这些对象称为Collection的元素

创建Collection集合的方式:

  • 多态的方式
  • 具体的实现类(如ArrayList)

Collection集合的常用方法有以下这些:

方法解释说明
boolean add(E e)添加元素
boolean remove(Object o)移除指定元素
void clear()清空元素
boolean contains(Object o)判断是否存在指定的元素
boolean isEmpty()判断集合是否为空
int size()元素个数/集合长度
boolean removeIf(Object o)根据条件进行移除

3.Collection集合的遍历

3.1迭代器遍历

迭代器遍历是集合的专用遍历方式,位于java.util包中

核心方法:

  • boolean hasNext():判断集合中是否还有下一个元素
  • E next():返回下一个元素,并将迭代器指针向后移动一位

示例:

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

public class A03_CollectionDemo3 {
    public static void main(String[] args) {
        //迭代器遍历
        Collection<String> coll = new ArrayList<>();
        //2.添加元素
        coll.add("aa");
        coll.add("bb");
        coll.add("cc");
        coll.add("dd");
        //3.获取迭代器对象
        //迭代器默认指向集合的0索引处
        Iterator<String> it = coll.iterator();
        //4.利用循环不断地获取集合中的每一个元素
        //调用next()前必须检查hasNext()
        while (it.hasNext()) {
            //获取元素并移动指针
            String str = it.next();
            if("bb".equals(str)){
                it.remove();
            }
        }
        System.out.println(coll);
    }
}

迭代器中有删除的方法:void remove()

迭代器是单向的,只能向前移动。

3.2增强for遍历

是JDK5之后出现的,底层是一个Iterator迭代器

格式:

for(集合或数组中元素的数据类型  变量名:集合或数组名) {

}

示例:

import java.util.ArrayList;
import java.util.Collection;

public class A04_CollectionDemo4 {
    public static void main(String[] args) {
        //增强for遍历
        Collection<String> coll = new ArrayList<>();
        coll.add("zhangsan");
        coll.add("lisi");
        coll.add("wangwu");
        for(String s:coll){
            System.out.println(s);
        }
        //快速生成:集合名+for 回车
        //s只是第三方变量
        //在循环过程中,s依次表示集合中的每一个元素
        for (String s : coll) {
         System.out.println(s);   
        }
    }
}
String[] array = {"A", "B", "C"};
Arrays.stream(array).forEach(System.out::println);
 

3.3lambda表达式

Lambda 表达式利用forEach方法,可以简化集合的遍历操作

示例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

public class A05_CollectionDemo5 {
    public static void main(String[] args) {
        //lambda表达式遍历
        Collection<String> coll = new ArrayList<>();
        coll.add("zhangsan");
        coll.add("lisi");
        coll.add("wangwu");
        //先用匿名内部类的方式遍历
        /*coll.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        */
        //lambda表达式遍历
        coll.forEach( s-> System.out.println(s));

    }
}

4.List集合

从上面的集合类体系结构图可以看出,List 集合与 Collection 集合是继承关系List 是 Collection 的子接口,继承了 Collection 的所有方法。

List集合的特点:存取有序(存取的顺序有序)、可重复、有索引

List集合的特有方法:

方法名说明
void add(int index ,E element)在集合指定位置插入指定元素
E remove(int index)删除指定位置的元素并返回被删除的元素
E set(int index,E element)修改指定位置元素并返回被修改的元素
E get(int index)返回引处的元素指定索

List集合的遍历方式,有以下五种:

  • 迭代器遍历
  • 增强for遍历
  • lambda表达式
  • 普通for循环
  • 列表迭代器遍历

5.列表迭代器遍历:

ListIterator(列表迭代器)是 Iterator 的子接口,专门用于遍历 List 集合(如 ArrayListLinkedList 等)。它不仅支持向前遍历,还能向后遍历,并且可以在遍历过程中修改集合元素(添加、删除、替换),功能比普通 Iterator 更强大。

列表迭代器的核心方法:

  • boolean hasNext():判断是否有下一个元素(向前遍历),有则返回 true
  • E next():返回下一个元素,并将迭代器指针向后移动一位
  • boolean hasPrevious():判断是否有上一个元素(向后遍历),有则返回 true
  • E previous():返回上一个元素,并将迭代器指针向前移动一位
  • int nextIndex():返回下一个元素的索引(若没有下一个元素,返回集合大小 size()
  • int previousIndex():返回上一个元素的索引(若没有上一个元素,返回 -1
  • void remove():删除迭代器最后一次返回的元素(next() 或 previous() 调用的元素)
  • void set(E e):用指定元素替换迭代器最后一次返回的元素(next() 或 previous() 调用的元素)
  • void add(E e):在当前迭代器指针位置插入指定元素

列表迭代器代码示例:

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

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

        //1.获取 ListIterator(默认从索引0开始)
        ListIterator<String> iterator = list.listIterator();

        // 2. 向前遍历(从前往后)
        while (iterator.hasNext()) {
            //获取下一个元素的索引
            int index = iterator.nextIndex(); 
            //获取下一个元素
            String element = iterator.next(); 
            System.out.println("索引 " + index + ":" + element);
        }
   
        // 3. 向后遍历(从后往前,此时指针已在集合末尾)
        while (iterator.hasPrevious()) {
            int index = iterator.previousIndex(); 
            String element = iterator.previous(); 
            System.out.println("索引 " + index + ":" + element);
        }
     
        //4.遍历中修改元素(替换、添加、删除)
        ListIterator<String> iterator2 = list.listIterator();
        while (iterator2.hasNext()) {
            String element = iterator2.next();
            if (element.equals("B")) {
                //替换元素
                iterator2.set("D"); 
            } else if (element.equals("C")) {
                //插入元素
                iterator2.add("E"); 
            }
        }
        //5.删除元素
        ListIterator<String> iterator3 = list.listIterator();
        while (iterator3.hasNext()) {
            String element = iterator3.next();
            if (element.equals("A")) {
                iterator3.remove();
            }
        }
        System.out.println(list); 
    }
}

注意:void set(E e)和void remove()方法只能在调用 next() 或 previous() 后才能使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值