`
495081611
  • 浏览: 33613 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java集合类之contains方法

阅读更多

今天做项目时,需要比较一个set集合中是否包含某个对象,这我自然就想起了set的contain方法,直接用不就行了。可事情没有那么简单,以前用这方法能成功是因为我用到的对象是基本的Java数据类型,这次用的是自己定义的对象。所以问题就出来了。

 

1 List 集合: 被比较的对象要重写equals()方法, 调用List中contains()方法,就是用equals()方法比较的.

                  List 集合 (允许重复元素,允许空值)

 

2 HashSet集合(不允许重复元素,允许空值): 被比较的对象要重写hashCode()方法和重写equals()方法, 两个都要.

 

3 TreeSet集合.(不允许重复元素):

    方法一:被比较的对象(如学生类)实现Comparable接口,重写CompareTo()方法.--(不允许空值)

    方法二:TreeSet的构造方法,传入Comparator接口的实现类,他是重写了compare()方法.--(允许空值)

 

4 HashMap集合: 与HashSet情况一样.

 

5 TreeMap集合: 与TreeSet情况一样. 

 

6  顺便说一下, 对List排序可用Collections类的sort()方法.要用到Comparable或Comparator接口.

 

这段是从别人那看到的,有点不解。看了下源码:

 

  final Entry<K,V> getEntry(Object key) {
        int hash = (key == null) ? 0 : hash(key.hashCode());
        for (Entry<K,V> e = table[indexFor(hash, table.length)];
             e != null;
             e = e.next) {
            Object k;
            if (e.hash == hash &&
                ((k = e.key) == key || (key != null && key.equals(k))))
                return e;
        }
        return null;
    }

 这事Map的源码,因为set内部就是使用map的实现。知道里面要用到hashCode(),那我的那个对象该怎么重写这个方法呢?

  1. //hashCode与equals方法的兼容   
  2. public class Employee{   
  3.        public int id;   
  4.        public String name="";   
  5.        //相同id对象具有相同散列码   
  6.        public int hashCode(){    
  7.               return id;   
  8.        }   
  9.        //equals必须比较id   
  10.         public boolean equals(Employee x){   
  11.               if(this.id==x.id) return true;   
  12.               else return false;   
  13.        }   
  14. }  
分享到:
评论

相关推荐

    java集合类详解(set list ArrayList等java集合类详述)

    Java 集合类详解 Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、...

    Java集合排序及java集合类详解.pdf

    ### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构...

    java自定义集合类

    自定义集合类则是开发者根据特定需求扩展Java集合框架的行为,以满足个性化或特定业务场景的功能需求。以下是对"java自定义集合类"这一主题的详细解释。 首先,Java集合框架包括接口(如List、Set、Map)和实现这些...

    java集合类总结

    本文将对Java集合框架中的Collection接口及其相关接口、类进行深入的探讨。 首先,Collection接口是所有单值容器的基础,它是Set、List和Queue接口的父接口。Collection接口定义了通用的操作方法,如`add()`用于...

    Java集合详解,详细讲解java的集合类

    本文将深入讲解Java集合类,特别是Collection接口和其下的List、Set,以及Map接口中的几个重要实现类。 首先,我们来看Collection接口。Collection是最基本的集合接口,它代表一组Object,即它的元素。Collection...

    java常用集合类总结

    Collection接口是Java集合类的基础接口,提供了基本的集合操作,如add、remove、contains等。Collection接口有两个子接口:List接口和Set接口。List接口是有序的,可以重复元素,常用的实现类有ArrayList和...

    java集合类的代码

    Java集合类是Java编程语言中一个非常重要的概念,它提供了数据结构和算法的实现,使得在处理一组对象时更加高效和灵活。Java集合框架包括接口(如List、Set、Queue等)和实现这些接口的类(如ArrayList、HashSet、...

    java零基础自学之 Java集合类

    Java集合类是Java编程中非常核心的部分,主要用于存储和管理对象。对于零基础的Java学习者,理解并熟练运用集合类是进阶的关键。集合类主要分为两大类:Collection和Map。 1. Collection接口: Collection是所有...

    Java集合类原理详解.pdf

    ### Java集合类原理详解 #### 1. 集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。它提供了一种灵活高效的方式来存储和访问对象集合,支持多种数据结构,如列表(List)、集(Set)、映射...

    java集合类精华大全

    Java集合类是Java编程中非常重要的一个部分,它为开发者提供了灵活的数据结构,用来存储和管理数据。在Java中,集合类主要分为三大类:Set、List和Map,它们都位于`java.util`包中。 Set接口表示无序且不允许重复...

    java集合类

    Java集合类是Java编程语言中用于存储一组对象的容器,它们提供了比基本数组更灵活的存储和操作方式。集合类不包括传统的固定长度数组,而是提供了像List、Set和Map等接口以及它们的实现类,以适应不同场景的需求。 ...

    java集合习题及答案

    ### Java集合基础习题解析及答案 #### 题目一:统计子字符串在字符串中的出现次数 **题目描述:** 编写一个Java程序,定义一个方法`getCount`,该方法接收两个参数:一个字符串`str`和一个子字符串`s`,返回`s`在`...

    Java集合类实例解析.doc

    在给定的示例中,我们看到了如何使用Java集合类,特别是ArrayList和与之相关的操作。首先,让我们深入理解集合类的概念。 Java集合框架是Java标准库的一部分,它提供了一组接口和类,用于存储和操作一组对象。这些...

    Java集合类总结

    ### Java集合类总结 #### 一、概述 Java集合类框架是Java标准库的一个重要组成部分,主要用于存储和处理数据集合。这些集合类被定义在`java.util`包中,为开发者提供了灵活的数据结构来实现各种应用程序的需求。...

    Java集合排序及java集合类详解

    ### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。它提供了一种灵活的数据结构,支持多种类型的容器,包括列表(List)、集(Set)和映射(Map)...

    Java集合类常用方法时间复杂度.docx

    以下是对Java集合类中一些常用方法的时间复杂度的详细分析: 1. ArrayList: - `add(E)`:在ArrayList的末尾添加元素,由于数组结构可以快速定位到末尾,所以时间复杂度为O(1)。 - `add(index, E)`:在指定位置...

    java 集合

    总的来说,Java集合框架是Java编程中不可或缺的一部分,理解和熟练掌握其原理与使用方法,对于提升代码质量、优化程序性能具有重要意义。在日常开发中,我们需要根据具体需求灵活运用各种集合类和接口,以实现高效的...

    Java集合排序及java集合类详解(Collection、List、Map、Set)讲解.pdf

    Java集合排序及java集合类详解(Collection、List、Map、Set)讲解 Java集合框架是Java语言中最重要的组件之一,能够正确使用Java集合框架对于Java程序的开发具有无比的好处。本文将详细解释Java集合框架的实现原理、...

Global site tag (gtag.js) - Google Analytics