`
daisy8564
  • 浏览: 76721 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

关于集合类,equals,HashCode,Comparable,Iterator总结

    博客分类:
  • JAVA
阅读更多
import java.math.*;
import java.util.*;
public class TestInteger {
   
    private static ArrayList al = new ArrayList();
    private static HashSet hs = new HashSet();
    
    public static void main( String[] args ) {
//        int i = Integer.valueOf( 200 );
//        BigInteger bi = new BigInteger(null, i);
//        BigInteger j = bi.add( new BigInteger(null , i) );
//        System.out.println( j );
//        testVector();
//        testArrayListSort();
        testArrayListRemove();
    }
    
    public static void testArrayListSort() {
//        al.add( new String("first datum") );
        al.add( new User( 13 , "Tom"));
        al.add( new User( 16 , "Lucy" ) );
        al.add( new User( 12 , "Gorige") );
        Collections.sort( al );
        System.out.println(al);
    }
    
    public static void testArrayListRemove() {
        al.add( new Company( "Tom" ));
        al.add( new Company( "Lucy" ) );
        al.add( new Company( "Gorige" ) );
        //为Company重写equals方法,才能实现删除
//        al.remove( new Company( "Tom" ) );
        Iterator it = al.iterator();
        Company c;
        while ( it.hasNext() ) {
//            System.out.println( it.next() );
            c = (Company)it.next();
            if ( c.equals( new Company( "Tom" )) ) {
                it.remove();
            }
        }

        System.out.println(al);
    }
    
    public static void testVector() {
        Vector v = new Vector();
        v.add( new String("sdfsdf") );
        VectorSon vs1 = new VectorSon();
        ArrayListSon al1 = new ArrayListSon();
        al1.add( "abcdefghijk" );
        vs1.add( "123123" );
        v.addAll( vs1 );
        v.addAll( al1 );
//        System.out.println(v);
        Iterator it = v.iterator();
        
        while ( it.hasNext() ) {
            System.out.println( it.next() );
        }
    }

}

class User implements Comparable {
    private int age;
    private String name;
    
    public User( int iAge , String sName ) {
        age = iAge; name = sName;
    }
    
    public String toString() {
        return "This is"+name+",age is"+age;
    }
    
    public boolean equals( Object o ) {
        if ( o instanceof User ) {
            User u = (User)o;
            if ( u.age == this.age && u.name.equals( this.name ) )
                return true;
        }
        return false;
    }
    
    public int compareTo( Object o ) {
        User u = (User)o;
        int i = this.age - u.age;
        return i !=0 ? i : this.name.compareTo( u.name );
    }
}

class Company {
    private String employee;
    
    public Company( String ep ) {
        employee = ep;
    }
    
    public String toString() {
        return employee;
    }
    
    public boolean equals( Object o ) {
        if ( o instanceof Company ) {
            Company c = (Company)o;
            if ( c.employee.equals( this.employee ) )
                return true;
        }
        return false;
    }
} 

import java.util.*;

@SuppressWarnings("unchecked")
public class TestSort {
    
    private static HashSet hs = new HashSet();
    private static LinkedList ll = new LinkedList();
    private static HashMap hm = new HashMap();
    
    //Set由于存储无序,所以不能排序
    public static void testHashSetSort() {
        hs.add( new Point( 1,2 ) );
        hs.add( new Point( 4,5 ) );
        hs.add( "91010sdfsf" );
        System.out.println( hs );
    }
    
    //Map尽管他有键来查找,但由于存储无序,所以也不能排序
    public static void testHashMapSort() {
        hm.put( new Point( 1,2 ) , "abc" );
        hm.put( new Point( 4,5 ) , "cde" );
        System.out.println( hm );
    }
    
    //list
    public static void testLinkedListSort() {
        ll.add( new Point( 41,15 ) );
        ll.add( new Point( 21,12 ) );
        ll.add( new Point( 54,5 ) );
        ll.add( new Point( 10,12 ) );
        Collections.sort( ll );
        
        System.out.println( ll );
    }
    
    public static void main( String[] args ) {
//        testHashSetSort();
//        testHashMapSort();
        testLinkedListSort();
    }

}

class Point implements Comparable {
    private int x,y;
    public Point( int _x , int _y ) {
        x = _x; y = _y;
    }
    public String toString() {
        return "x="+x+",y="+y;
    }
    public int compareTo( Object o ) {
        Point p = (Point)o;
        int i = this.x - p.x;
        int j = this.y - p.y;
        return i != 0 ? i : j;
    }
}



1。只有实现了Collection的类才有iterator方法。所以Map没有
2。当使用无序的Set时候,如果只用默认的remove删除元素,必须要重写equals和hashCode方法。
3。使用有序的list时候,无需重写hashCode方法,但仍然要重写equals方法。
4。Map依靠key来查找value,根据key来remove时如果key为对象就必须要重写hashCode方法和equals方法。
5。Set和Map是不能排序的,因为它的存储是无序的,list是可以的,因为它是有序的,list如果元素是对象,要对其排序需要实现Comparable接口和其中的方法compareTo,如果要排序的话,list中元素类型必须一致,否则执行时异常,不排序不一致没关系。
分享到:
评论

相关推荐

    java集合分类总结.doc

    HashSet是哈希表实现的,equals返回true,hashCode返回相同的整数。SortedSet是Set的子接口,对Set排序实现类是TreeSet,使用二叉树实现的。 Map集合是一种键值对集合,key不能重复,但是value可以重复。Map集合的...

    java常用集合类总结

    Java中的集合类是编程中不可或缺的部分,它们提供了一种组织和管理对象的方式。在这个总结中,我们将深入探讨Java集合框架中的主要组件,包括ArrayList、LinkedList、HashSet、HashMap等,并了解如何进行基本操作如...

    JAVA集合类[参考].pdf

    在Java编程语言中,集合框架是处理对象组的重要工具,其中`Collection`接口是所有集合类的根接口。集合是用来存储一组不唯一、无序的对象,而`List`和`Set`是由`Collection`派生的两个主要接口。在描述中提到了`Set`...

    JAVA基础-集合类

    ### JAVA基础-集合类 #### 一、集合的概述与分类 ##### 1. 集合概述 集合是Java编程语言中一种重要的数据结构,它用于存储一系列的对象。与数组相比,集合提供了更加灵活的方式来处理数据。集合的一个显著特点是它...

    Java集合讲义大全.docx

    Collection 是 List 和 Set 的父接口,在 Collection 中定义了一些主要方法,例如 add、addAll、clear、contains、containsAll、equals、hashCode、isEmpty、iterator、remove、removeAll 和 retainAll 等。...

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

    Java集合排序及java集合类详解 Java集合框架是Java编程语言中极其重要的一部分,它提供了存储和操作数据的高效方式。本文将深入探讨Java集合框架的四大核心组件:`Collection`、`List`、`Map`和`Set`,以及它们的...

    java项目开发总结.docx

    * Iterator、equals、hashCode、Comparable 和 Comparator 等集合操作 五、Java 标准库 * String 和 StringBuffer 类 * java.util.Date 和 SimpleDateFormat 类 * Regex 正则表达式和 Pattern 类 六、反射机制 *...

    集合部分总结

    - **HashSet**:使用哈希表实现,通过`hashCode()`和`equals()`方法来判断元素的相等性。 - **TreeSet**:实现了`SortedSet`接口,能够根据元素的自然顺序或者自定义比较器进行排序,内部使用红黑树结构实现。 ##...

    Java习题六.docx

    本资源摘要信息涵盖了 Java 中的集合框架,包括 TreeSet、List、Set、Map 等集合类的使用和特性。同时,涵盖了 Lambda 表达式、Stream 接口、 Iterator 等概念。 1. 在创建 TreeSet 对象时,可以传入自定义比较器,...

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

    - **覆写hashCode()**:为了确保键的唯一性,当使用自定义对象作为键时,需要重写equals()和hashCode()方法。 5. **Set** - Set接口不包含重复元素,且不保证元素顺序。 - **实现原理**:HashSet是最常见的Set...

    java集合课程3.docx

    Java集合框架是Java编程语言中一...以上内容只是Java集合框架的一部分,实际上还有更多高级特性和使用技巧,如迭代器(Iterator)、并发集合(Concurrent Collections)、流(Stream)等,需要在实践中不断学习和掌握。

    java集合知识-map、set等

    一般情况下,如果自定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。 建立对象判断是否相同的依据。 import java.util.HashSet; import java.util.Iterator; import java.util....

    集合笔记整理.doc

    8. **HashSet与TreeSet**:HashSet存储元素时,元素必须重写equals()和hashCode()方法以确保唯一性。而TreeSet则要求元素实现Comparable接口或传入Comparator比较器,用于元素的排序。 **双列集合 Map** 9. **Map...

    java集合详解

    Collection接口提供了一系列通用方法,如contains()(判断是否包含指定元素)、clear()(清空容器)、equals()(比较两个集合是否相等)和iterator()(获取迭代器)。 1.2.2 迭代器 迭代器是遍历集合中元素的主要...

    java集合详解.pdf

    迭代器是遍历集合元素的主要方式,通过调用iterator()方法获取,然后使用hasNext()和next()方法来遍历集合中的每一个元素。迭代器还支持remove()方法,可以在遍历过程中删除元素。 1.3 LIST List接口继承自...

    7-java进阶-集合1

    本节主要讨论的是Java集合中的高级话题,特别是关于`List`、`Set`接口以及它们的实现类,如`ArrayList`、`LinkedList`、`HashSet`、`HashMap`等。 首先,集合框架的核心是`Collection`接口,它是所有单个数据存储的...

    Java期末复习-类集框架

    - `Comparable`接口用于实现对象的自然排序,`equals()`和`hashCode()`方法用于比较和哈希存储,是确保集合中元素唯一性的重要方法。 在使用类集框架时,泛型的使用能提高类型安全性,避免类型转换异常。同时,...

Global site tag (gtag.js) - Google Analytics