`

List接口中contain方法

    博客分类:
  • java
 
阅读更多

List接口继承了Collection接口的contains方法,该方法方便用来判断某个对象是否在List接口的实现类对象中,省去了我们自己写循环遍历来判断是某个集合对象中是否包含某个对象。

但是其实contains的内部实现机制也是如此,如果要判断某个对象在集合对象中是否存在,是拿该对象与集合对象中每个对象进行比较,在比较的时候也是调用本对象类型的equals方法,所以我们可以通过重写本对象类型中的equals方法来制定我们需要的比较规则。

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

import com.collection12.Stu;

public class TestCollections2 {
    
    private List<Stu> stuList = new ArrayList<Stu>();

    public static void main(String[] args) {
        TestCollections2 tc2 = new TestCollections2();
        tc2.addStudent();
        tc2.testContains();
        tc2.testContainsAll();
    }
    
    public void testContains() {
        Stu s = stuList.get(0);
        System.out.println("学生集合中是否包含" + s.getName() + ":" + stuList.contains(s));//结果:学生集合中是否包含tom:true
        Stu s2 = new Stu("1", "tom");
        System.out.println("学生集合中是否包含" + s2.getName() + ":" + stuList.contains(s2));//结果:学生集合中是否包含tom:true
    }
    
    public void testContainsAll() {
        Stu s1 = new Stu("11", "tom");
        Stu s2 = new Stu("22","alex");
        System.out.println("学生中是否包含" + s1.getName() + "、" + s2.getName()  + ":" + stuList.containsAll(Arrays.asList(s1,s2)));
        //以上结果:学生中是否包含tom、alex:true
    }
    public void addStudent() {
         Stu s1 = new Stu("1", "tom");
         stuList.add(s1);
         Stu s2 = new Stu("2","alex");
         stuList.add(s2);
         Stu s3 = new Stu("3","jack");
         stuList.add(s3);
    }

}

 

public class Stu {

    private String id;
    private String name;
    
    public Stu(String id,String name) {
        this.id = id; 
        this.name = name;
    }
    /**
     * @return id
     */
    public String getId() {
        return id;
    }
    /**
     * @param id 要设置的 id
     */
    public void setId(String id) {
        this.id = id;
    }
    /**
     * @return name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name 要设置的 name
     */
    public void setName(String name) {
        this.name = name;
    }
    
    @Override//重写了equals方法,在本方法中以name属性是否相同来判断两个Stu对象是否相等
    public boolean equals(Object obj) {
        if(this == obj)
            return true;
        if(obj == null) 
            return false;
        if(getClass() != obj.getClass()) {//判断是否是同一个类型方法一
            return false;
        }
        if(!(obj instanceof Stu)) {//判断是否是同一个类型方法二
           return false; 
        }
        Stu s = (Stu)obj;
        /*if(id == null) {
            if(s.id != null ) {
                return false;
            }
        } else if(!id.equals(s.id)) {
            return false;
        }*/
        if(name == null) {
            if(s.name != null) {
                return false;
            }
        } else if(!name.equals(s.name)) {
            return false;
        }
        return true;
    }
}

 

分享到:
评论

相关推荐

    mybatisMapped报错 Statements collection does not contain value for

    - 确保Mapper接口中的方法签名与XML文件中定义的方法ID完全一致。 - 检查XML文件中的命名空间是否与接口所在的包路径相匹配。 - 示例: ```xml &lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN...

    C# ListT ContainsT()的用法小结

    泛型List中有一个比较列表是否已包含对象的方法Contains(),今天在网上搜了一个用法,记录下来,备查。 要用此方法比较我们的自定义对象,首先要有一个比较器, 要注意的是,这里的比较器是实现IEqualityComparer...

    C#使用IComparer自定义List类实现排序的方法

    当需要对List中的元素进行自定义排序时,可以利用IComparer接口。IComparer是一个抽象接口,提供了比较两个对象的方式,使得我们可以根据特定的规则进行排序。本篇将详细介绍如何在C#中使用IComparer自定义List类...

    python自动化RobotFramework中Collections列表关键字使用(四)

    例如,我们可以使用 `List Should Contain Value` 来验证响应数据中是否包含预期的元素,或使用 `Combine Lists` 来合并不同来源的数据。学习并熟练掌握 Collections 库,能够提升自动化测试的专业技能。

    java容器(持有对象)

    List接口支持重复元素,提供了特有的方法如get(int index)获取指定位置的元素,add(int index, E element)在指定位置插入元素,以及set(int index, E element)替换指定位置的元素。List接口的实现类有ArrayList、...

    java使用lambda表达式对List集合进行操作技巧(JDK1.8)

    List&lt;String&gt; newList = list.stream().filter(contain1.and(contain2)).collect(Collectors.toList()); newList.forEach(s -&gt; System.out.println(s)); ``` 这段代码将过滤出包含字符串 "1" 和 "2" 的元素,并将其...

    RobotFramework得到response后取数

    在使用Robot Framework进行自动化接口测试时,我们常常需要获取接口响应(response)中的数据,并进行后续的验证或处理。本文将详细介绍如何从响应中提取所需的数据。 1. **解析响应内容** - Robot Framework中的...

    python自动化RobotFramework中Collections字典关键字使用(五).docx

    - 如果参数`deepcopy`设置为True,则使用深拷贝模式(`copy.deepcopy(list)`),这意味着新列表的修改不会影响原列表。 3. **Dictionary Should Contain Sub Dictionary** - 功能:检查字典1是否包含字典2的所有key:...

    MyExtRichTextBox是网络上使用比较广泛的自定义RichTextBox组件

    它支持更简单的方法向RichTextBox中加载图片,按钮,进程条,超链接和ActiveX等功能, 可以将源代码加载到自己的工程中,也可以编译成DLL文件,使用引用来加载. 现在的source编码版本为C#2008 作者信息: History * ...

    Linux中常用英语单词的中文解释

    用户与操作系统之间的接口,可以执行命令和脚本。 #### which(哪个) 查找并报告系统中可执行文件的位置。 #### find(查找) 在文件系统中搜索符合特定条件的文件或目录。 #### executable(可执行的) 能够...

    OREM:Restfull API抽象层

    GET /status # Return a list of statuses GET /status/1 # Return the status of id 1 POST /status # Create a status (the body of the request contain the hash of the status) PUT /status/1 # Update the ...

    python自动化测试框架RobotFramework内置库BuiltIn介绍(二)

    * Get List Value:获取列表中的值 ### 表达式计算 BuiltIn 库提供了一些关键字,用于表达式的计算和比较。这些关键字包括: * Evaluate:计算一个表达式的值 * Should Be True:检查一个表达式是否为真 * Should...

    java常用英语

    - **Implement**: 实现,表示一个类实现了某个接口的全部方法。 - **Interface**: 接口,Java中定义一组行为规范的抽象类型。 - **Native**: 本地的,表示使用原生代码实现的方法。 - **New**: 新的,Java中创建对象...

    C++经典书籍高频词汇_不怕看不懂英文著作

    容器是C++标准库中的一个关键组成部分,提供了一系列的数据结构,如`vector`、`list`、`map`等,用于高效地存储和操作数据。容器的设计遵循了迭代器的概念,使得它们非常灵活和强大。 ##### 模板元编程(Template ...

    程序员英语单词

    - **名词**: 在计算机科学中,“shell”指的是提供用户与操作系统之间交互接口的程序。 #### 42. Delete (删除) - **动词**: “delete”在计算机科学中表示从文件系统中移除文件或数据的行为。 #### 43. Enter ...

    程序员常用计算机专业英语

    - **名词**: 壳、外壳(shell)在计算机系统中,通常指用户与操作系统交互的接口。 #### 42. delete - **动词**: 删除、删去、作废(delete)指移除文件、数据或信息。 #### 43. enter - **动词**: 键入、送入...

    spring mvc 项目错误,和一些配置

    在Spring MVC的场景下,可能是由于Bean初始化过程中的某些方法抛出了异常,最终导致了`InvocationTargetException`。 - **解决办法**: - 检查Bean配置,确保所有依赖都已经正确设置。 - 查看日志信息,定位具体的...

    程序员英语词汇

    10. **list** (n. 列表,显示,v. 打印): 列表是一种数据结构,用于存储多个元素的有序集合。打印是指将列表中的内容输出到显示器或打印机。 #### 二、高级词汇 1. **cursor** (n. 光标): 光标是在屏幕上指示当前...

    adb1.0.26包含fastboot.exe

    除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 USB 连接线的限制啦! 操作步骤: 将 Android 设备...

Global site tag (gtag.js) - Google Analytics