解析Collection接口中的常用的被实现子类重写的方法

解析Collection接口中的常用的被实现子类重写的方法

1 添加单个元素方法

1.1 使用方法

Collection接口的间接实现子类.add(E e);
//返回值类型为布尔类型,若增加成功,则返回true,若增加不成功,则返回false
//对于List接口下面的实现子类,一般只要增加元素都会返回true
//对于Set接口下面的实现子类,若增加重复的元素,则返回false,因为会Set接口下面的实现子类的元素的特点是无序不可重复
//默认是添加在集合中已经存在的有效元素的后一个位置,若集合无有效元素,则添加的位置为0

1.2 List接口下面的实现子类示例代码

package Work;
import java.util.List;
import java.util.ArrayList;
public class Test07 {
    public static void main(String[] args) {
        List arr=new ArrayList();
        arr.add(1);
        System.out.println(arr.add(1));
    }

}

1.3 List接口下面的实现子类示例代码运行截图

在这里插入图片描述

1.4 Set接口下面的实现子类的示例代码

package Work;
import java.util.HashSet;
import java.util.Set;
public class Test07 {
    public static void main(String[] args) {
        Set arr=new HashSet();
        arr.add(1);
        System.out.println(arr.add(1));
    }

}

1.5 Set接口下面的实现子类的示例代码运行截图

在这里插入图片描述

2 删除指定元素

2.1 使用方法

Collection接口的间接实现子类.remove(Object o);
//返回值类型为布尔,若有这个元素,则删除成功返回true,若没有这个元素,则显示删除失败返回false
//理解:因为你传入的实参是一个对象,所以无需告知你删除的是啥东西,只需要返回是否删除成功就行了

2.2 示例代码

package Work;
import java.util.List;
import java.util.ArrayList;
public class Test07 {
    public static void main(String[] args) {
        List arr=new ArrayList();
        arr.add("1234");
        System.out.println(arr.remove("1456"));
        System.out.println(arr.remove("1234"));
    }

}

2.3 示例代码运行截图

在这里插入图片描述

3 查找元素是否存在

3.1 使用方法

Collection接口的实现间接子类.contains(Object 0);
//如果该集合包含Object对象,那么就会返回true,如果不包含,就会返回false

3.2 底层分析

3.2.1 底层源码(ArrayList集合为例)
public int indexOf(Object o) {
        if (o == null) {
            for (int i = 0; i < size; i++)
                if (elementData[i]==null)
                    return i;
        } else {
            for (int i = 0; i < size; i++)
                if (o.equals(elementData[i]))
                    return i;
        }
        return -1;
}
3.2.2 结论

contains方法底层是调用equals方法进行比较的,若自定义类没有重写equals方法,默认就是使用Object里面的equals方法,默认比较的是内存地址,而这不是我们想要的结果

因此,自定义类一定要重写equals方法

3.3 示例代码

package Work;
import java.util.List;
import java.util.ArrayList;
import java.util.Objects;

public class Test07 {
    public static void main(String[] args) {
        List arr=new ArrayList();
        arr.add(new Book01("三国演义",13,"罗贯中"));
        arr.add(new Book01("红楼梦",15,"曹雪芹"));
        arr.add(new Book01("西游记",16,"吴承恩"));
        System.out.println(arr.contains(new Book01("三国演义",13,"罗贯中")));
        System.out.println(arr.contains(new Book01("三国演义",15,"罗贯中")));
    }

}
class Book01{
    private String name;
    private double price;
    private String author;

    public Book01() {
    }

    public Book01(String name, double price, String author) {
        this.name = name;
        this.price = price;
        this.author = author;
    }

    public String getName() {
        return name;
    }

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

    public double getPrice() {
        return price;
    }

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

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Book01 book01 = (Book01) o;
        return Double.compare(book01.price, price) == 0 && Objects.equals(name, book01.name) && Objects.equals(author, book01.author);
    }


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

3.4 示例代码运行截图

在这里插入图片描述

4 获取集合里面有效元素的个数

4.1 使用方法

Collection接口下面的间接实现子类.size();
//返回值类型为int类型,返回的是实现类里面有效元素的个数,注意不是Object[] elementData的长度

4.2 示例代码

package Work;
import java.util.List;
import java.util.ArrayList;
import java.util.Objects;

public class Test07 {
    public static void main(String[] args) {
        List arr=new ArrayList();
        arr.add("wskfdh");
        arr.add(12);
        //实际上发生了自动装箱
        arr.add(14);
        System.out.println(arr.size());
    }

}

4.3 示例代码运行截图

在这里插入图片描述

5 判断集合里面有效元素的个数是否为0

5.1 使用方法

Collection接口的间接实现子类.isEmpty();
//返回值为布尔类型,若集合里面的有效元素个数为0,则返回true,否则返回false

5.2 示例代码

package Work;
import java.util.List;
import java.util.ArrayList;
public class Test07 {
    public static void main(String[] args) {
        List arr=new ArrayList();
        System.out.println("添加元素之前");
        System.out.println(arr.isEmpty());
        arr.add("wskfdh");
        System.out.println("添加元素之后");
        System.out.println(arr.isEmpty());
    }

}

5.3 示例代码运行截图

在这里插入图片描述

6 清空集合里面所有的有效元素

6.1 使用方法

Collection接口的间接实现子类对象.clear();
//返回值为void类型

6.2 示例代码

package Work;
import java.util.List;
import java.util.ArrayList;
public class Test07 {
    public static void main(String[] args) {
        List arr=new ArrayList();
        System.out.println("清空元素之前");
        arr.add("wskfdh");
        System.out.println(arr.isEmpty());
        System.out.println("清空元素之后");
        arr.clear();
        System.out.println(arr.isEmpty());
    }

}

6.3 示例代码运行截图

在这里插入图片描述

7 添加多个元素

7.1 使用方法

Collection接口的间接实现子类对象.addAll(Collection c);
//返回值为布尔类型,一般传入一个Collection接口的实现子类的返回值结果就为true
//就算有重复的元素也一样,只是该元素加不进去而已,并不影响返回值结果的
//添加进入的集合元素会转换成调用者的这个集合类型
//如果是List下面的实现类,就添加到集合有效元素的后一个位置

7.2 示例代码

package Work;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
import java.util.HashSet;
public class Test07 {
    public static void main(String[] args) {
        Set arr=new HashSet();
        arr.add("12");
        arr.add("66");
        ArrayList arrayList=new ArrayList();
        arrayList.add("13");
        arrayList.add("12");
        arrayList.add("14");
        System.out.println("有重复元素的添加结果为:");
        System.out.println(arr.addAll(arrayList));
        System.out.println("添加后arr的结果为:");
        Iterator iterator = arr.iterator();
        while (iterator.hasNext()) {
            Object next =  iterator.next();
            System.out.println(next);
        }
    }

}

7.3 示例代码运行截图

在这里插入图片描述

8 查看多个元素是否都存在

8.1 使用方法

Collection接口的间接实现子类对象.containsAll(Collection c);
//如果包含传入集合里面的所有元素,那就返回true,否则返回false

8.2 示例代码

package Work;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
import java.util.HashSet;
public class Test07 {
    public static void main(String[] args) {
        Set arr=new HashSet();
        arr.add("12");
        arr.add("66");
        ArrayList arrayList=new ArrayList();
        arrayList.add("13");
        arrayList.add("12");
        System.out.println("查找结果为:"+arr.containsAll(arrayList));
        System.out.println("移除传入参数里面的特有元素后:");
        arrayList.remove("13");
        System.out.println("查找结果为:"+arr.containsAll(arrayList));
    }

}

8.3 示例代码运行截图

在这里插入图片描述

9 删除多个元素

9.1 使用方法

Collection接口的间接实现子类对象.removeAll(Collection c);
//返回为true.只要删除成功一个,就返回true

9.2 示例代码

package Work;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test07 {
    public static void main(String[] args) {
        List arr = new ArrayList();
        arr.add("12");
        arr.add("66");
        ArrayList arrayList = new ArrayList();
        arrayList.add("13");
        arrayList.add("12");
        //只要删除成功集合里面的一个元素就返回true,否则就返回false;添加元素的也一样
        System.out.println("删除结果为:" + arr.removeAll(arrayList));
        Iterator iterator = arr.iterator();
        while (iterator.hasNext()) {
            Object next =  iterator.next();
            System.out.println(next);
        }
    }
}

9.3 示例代码运行截图

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSS4362

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值