Java--集合

Java--集合

集合的理解和好处 1.可以动态保存任意多个对象,使用方便 2.提供了add,remove,set,get,增删改查方法,使代码更加简洁 集合框架图 单列集合 实现表示继承,虚线表示实现接口 Collection有两个重要接口List和Set,他们的实现子类都是单列集合

集合的理解和好处

1.可以动态保存任意多个对象,使用方便

2.提供了add,remove,set,get,增删改查方法,使代码更加简洁

集合框架图

单列集合

实现表示继承,虚线表示实现接口

Collection有两个重要接口List和Set,他们的实现子类都是单列集合

双列集合

Map的实现子类都是双列集合,键值对的形式K-V

Collection常用方法

1.添加方法add

  List list = new ArrayList();
        //1.添加方法add(Object),这里的类型是Object
        list.add("jack");
        list.add(12);//这里用了自动装箱add(new Integer(12))
        list.add(true);
        list.add("tom");
        list.add("join");
        System.out.println("list: " + list);

2..删除方法remove

//2.删除方法remove,这个方法是重载的,可以选择两种方式删除,第一种是删除指定索引,第二种是删除指定元素(返回的是boolean)
        list.remove(0);
        System.out.println("list: " + list);
        list.remove(new Integer(12));
        System.out.println("list: " + list);

3.检查元素是否存在contains

 //3.检查元素是否存在,contains,返回值是boolean
        System.out.println(list.contains(true));

4.返回元素个数size

//4.返回元素个数,size()
System.out.println(list.size());

5.判断元素是否为空

//5.判断元素是否为空isEmpty()
        System.out.println(list.isEmpty());

6.清空clear

 //6.clear()清空
        list.clear();
        System.out.println("list: " + list);

7.添加多个元素addAll,添加类型为Connection

 //7.添加多个元素addall,添加的类型为Connection
        List list2 = new ArrayList();
        list2.add("三国演义");
        list2.add("红楼梦");
        List list3 = new ArrayList();
        list3.add("三国");
        list3.add("红楼");
        list.addAll(list2);
        list.addAll(list3);
        System.out.println(list);

8.判断多个元素是否存在containsAll

 //8.判断多个元素是否存在containsAll
        System.out.println(list.containsAll(list2));
        System.out.println(list.containsAll(list3));

9.删除多个元素removeAll

 //9.删除多个元素
        System.out.println(list.removeAll(list2));
        System.out.println("list: "+ list);

Iterator迭代器

但凡是能实现Collection的接口都能使用Iterator迭代器进行集合元素的遍历

iterator迭代器,可以将集合中的元素遍历出来,所有实现Collection接口的子类都可以使用iterator迭代器

hasNext()是判断是否还有下一个元素

next()是取出迭代器元素

如果在使用iterator.next()会导致异常NoSuchElementException,因为当前指针已经指向最后一个元素了

iterator.next();

如果想重置迭代器:iterator = col.iterator();直接执行最初就好

package com.tbw.Collection_;

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

/**
 * ClassName:Iterator_
 * Datetime:2025/1/20 23:08
 * jdk:11
 */
public class Iterator_ {
    @SuppressWarnings({"all"})
    public static void main(String[] args) {
        Collection col = new ArrayList();
        col.add(new Book("三国演义","罗贯中",10.1));
        col.add(new Book("红楼梦","曹雪芹",34.6));
        col.add(new Book("小李飞刀","古龙",5.1));
        //iterator迭代器,可以将集合中的元素遍历出来,所有实现Collection接口的子类都可以使用iterator迭代器
        //hasNext()是判断是否还有下一个元素
        //next()是取出迭代器元素
        Iterator iterator = col.iterator();
        while(iterator.hasNext()){
            Object obj = iterator.next();
            System.out.println("col="+ obj);
        }
        //如果在使用iterator.next()会导致异常NoSuchElementException,因为当前指针已经指向最后一个元素了
        //iterator.next();
        //如果想重置迭代器
        System.out.println("====================");
        iterator = col.iterator();
        while(iterator.hasNext()){
            Object obj = iterator.next();
            System.out.println("col="+ obj);
        }
    }
}
class Book{
    private String name;
    private String autor;
    private double price;

    public Book(String name, String autor, double price) {
        this.name = name;
        this.autor = autor;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", autor='" + autor + '\'' +
                ", price=" + price +
                '}';
    }
}

集合增强for

增强for:可以理解成就是简化版的迭代器,因为底层代码就是迭代器,因为迭代器写起来很麻烦

增强for快捷键:大写的I

package com.tbw.Collection_;

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

/**
 * ClassName:for_
 * Datetime:2025/1/21 12:42
 * jdk:11
 */
public class for_ {
    @SuppressWarnings({"all"})
    public static void main(String[] args) {
        Collection col = new ArrayList();
        col.add(new Book("三国演义","罗贯中",10.1));
        col.add(new Book("红楼梦","曹雪芹",34.6));
        col.add(new Book("小李飞刀","古龙",5.1));
        for (Object obj :col) {
            System.out.println(obj);
        }
    }
}

普通for循环

   for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

List接口

List接口是Collection的子接口

List中API实现类有:

ABstractList ABstractSequentiaList ArrayList AttributeList

CopyOnWriteArrayList LinkedList RoleList RoleUnresolvedList

Stack Vector

有序性

1.凡事实现List接口的子接口都有一个特点:集合的顺序是有序地,即存入顺序和取出顺序相对应

可根据下标索引取元素

2.List集合中的元素可以根据下标索引取出即 list.get(2)

package org.example;
import java.util.ArrayList;
import java.util.List;
public class List_ {
    public static void main(String[] args) {
            List list = new ArrayList();
            list.add("hello");
            list.add("world");
            list.add("java");
            list.add("hello2");
            System.out.println("list="+list);
            System.out.println(list.get(2));
        }
}

List接口常用方法(注意,set不可用,他们的共用方法只有Collection的)

1.add(int index,Object ele)

在元素中间插入元素

package org.example;
import java.util.ArrayList;
import java.util.List;
public class List_ {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("小红");
        list.add("小蓝");
        list.add(1,"小紫");
        System.out.println("list="+list);
    }
}

2.addAll(int index,Collection ele)

在元素中间插入集合

      //在元素中间插入集合
        List list = new ArrayList();
        list.add("小花");
        list.add("小兰");
        list.addAll(1,list);
        System.out.println("list="+list);

3.get(int index)

获取指定位置索引元素

//get(int index) 获取指定位置索引元素
        System.out.println(list2.get(1));

4.indexof(obj)

返回obj在集合中第一次出现的位置,如果后面有相同元素,不用管

//indexof返回元素在集合中第一次出现的位置
        System.out.println(list.indexOf("小花"));

5.lastindexOf(obj)

返回元素最后一次出现的位置

//lastindexOf返回元素在集合中最后一次出现的位置
        System.out.println(list.lastIndexOf("小红"));

6.remove(int index)

移除指定下标元素,并返回

//remove移除指定下标元素并返回
        System.out.println("list="+list);
        list.remove(0);
        System.out.println("list="+list);

7.set(int index,object ele)

替换指定下标的元素

//set替换制定下标的元素
        System.out.println("=====================");
        System.out.println("list="+list);
        list.set(1,"marry");
        System.out.println("list="+list);

8.subList(int fromIndex,int toIndex)

返回从fromIndex到toIndex位置的子集合

//subList,返回从fromIndex到toIndex的自己和
        list.add("jack");
        list.add("xiaoming");
        System.out.println("list="+list);
        List returnlist = list.subList(0, 3);
        System.out.println("returnList="+returnlist);

返回的是0 1 2元素 不包括3 前闭后开

fromIndex<=subList<toIndex

LICENSED UNDER CC BY-NC-SA 4.0
评论