对于集合List Set Map当调用其方法contains,是不是包含某元素时,会自动调用对象的equals方法,对于ArrayList只需要覆盖对象的equals即可,但对于Set Map,还需要覆盖对象的hashCode,不然得不到预期的结果
测试代码:
public class Name {
private String firstName;
private String lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public boolean equals(Object obj) {
Name name = (Name)obj;
System.out.println(name.firstName.equals(firstName)&&name.lastName.equals(lastName));
return name.firstName.equals(firstName)&&name.lastName.equals(lastName);
}
@Override
public int hashCode() {
return firstName.hashCode()*lastName.hashCode();
}
}
public class TestContains {
static void testHashSet(){
Set s = new HashSet();
Name name = new Name("hello","world");
s.add(name);
System.out.println(s.contains(new Name("hello","world")));
//System.out.println(s.contains(name));
}
static void testHashMap(){
Map map = new HashMap();
Name name = new Name("hello","world");
map.put(name, name);
System.out.println(map.containsKey( new Name("hello","world")));
}
static void testArrayList(){
List list = new ArrayList();
Name name = new Name("hello","world");
list.add(name);
System.out.println(list.contains(new Name("hello","world")));
}
/**
* @param args
*/
public static void main(String[] args) {
testArrayList();
testHashSet();
testHashMap();
}
}
分享到:
相关推荐
Collection 集合框架的顶级接口是 Collection,下面有三个主要的子接口:List、Set 和 Map。 List 集合是一种有序集合,可以存储重复元素,每个元素都有索引。ArrayList 和 LinkedList 是 List 集合的两个常用的...
它包括集合(Collection)、列表(List)、队列(Queue)、集(Set)、映射(Map)等接口,以及实现这些接口的类,如ArrayList、LinkedList、HashSet、HashMap等。集合框架使得数据操作更加灵活,提高了代码的可复用...
1. **Java集合框架**:Java集合框架是Java库中的核心部分,提供了一组高效且灵活的数据结构,如List、Set和Map。在这个通讯录项目中,最可能使用的是List接口,因为它允许我们保持元素的顺序,并可以有重复元素。 2...
根据提供的文档信息,本文将详细解析并发容器(Map、List、Set)的实战应用及其原理。并发容器在Java多线程环境下发挥着至关重要的作用,它们的设计旨在解决非线程安全容器在高并发场景下的性能瓶颈问题。接下来,...
Java面试题涵盖了许多核心知识点,这里我们主要讨论其中提到的几个关键点:单例模式、List、Set和Map的区别。 1. **单例模式** 单例模式是一种设计模式,它的目标是确保一个类只有一个实例,并提供全局访问点。在...
在Java中,常见的容器主要分为三类:List、Set和Map,这些都是Java集合框架的重要组成部分。 首先,我们来看Collection接口,它是所有单值容器的基础接口。Collection接口定义了通用的操作方法,比如size()返回容器...
本文将深入探讨Java集合框架的各个方面,包括Collection、List、Set和Map等主要接口及其实现原理。 ### 集合框架概述 1.1.1 容器简介 在Java中,容器是用来存储一组对象的类或接口,它们提供了添加、删除、查找和...
List接口的方法包括在指定位置插入元素(add(int index, Object ele))、获取指定位置的元素(get(int index))、移除元素(remove(int index))以及替换元素(set(int index, Object ele))等。此外,List还提供了...
Collection 接口定义了单列集合(List 和 Set)通用的方法,这些方法可用于操作所有的单列集合。这些方法包括 add、clear、remove、contains、isEmpty、size 和 toArray 等。 Iterator 是 Java 集合中的一员,主要...
这里的`contains`方法就是用来判断集合中是否存在指定元素的方法。 #### 六、示例代码详解 - **获取User对象的属性**: - 获取`username`属性:`<s:property value="user.username" />` - 获取`password`属性:`...
本文将深入探讨Java集合框架中的主要组件:Collection、List、Set和Map,以及它们的特点、常用方法和实现原理。 1. **集合框架概述** - **容器简介**:在Java中,集合框架是一种容器,用于存储一组对象。这些容器...
List接口特有的方法有get()(获取指定位置的元素)、set()(替换指定位置的元素)、add()(在指定位置插入元素)和remove()(移除指定位置的元素)。 1.3.3 实现原理 ArrayList使用动态扩容的数组实现,适合随机...
**3.6 Checking Whether a String Contains a Set of Characters(检查字符串是否包含一组字符)** 为了判断字符串是否包含特定字符集,可以使用`in`运算符: ```python if set(characters).issubset(set(my_string...
本文将深入解析Java集合框架,包括Collection、List、Set、Map及其实现原理。 1. 集合框架概述 集合框架是Java标准库的核心组件,它定义了一组接口和类,使得开发者可以方便地处理对象的集合。这些接口和类为数据...
本集中的面试题主要围绕着Java集合框架中的核心接口和类,如List、Set、Map以及ArrayList、LinkedList、HashSet、HashMap等展开。 1. **List接口**: - List接口是有序的集合,允许有重复元素。ArrayList和...
4. 转换操作:提供了转化方法,可以将集合转换为其他类型的集合,如List转为Set,或者Map转为List。 5. 并行处理:利用多线程并行处理集合,提高大数据量处理的效率。 6. 其他实用方法:如containsAll、removeAll...
List的常用方法有: - `addEnd()` - 在列表末尾添加一个成员。 - `addStart()` - 在列表开头添加一个成员。 - `elements()` - 返回列表中成员的数量。 - `getEnumerator()` - 返回此List对象的ListEnumerator对象。 ...