码迷,mamicode.com
首页 > 编程语言 > 详细

Java集合——集合框架Set接口

时间:2016-01-13 23:18:37      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:

1.Set接口

一个不包含重复元素的collecyion。更确切的讲,set不包含满足e1.equals(e2)的元素e1和e2,并且最多包含一个null元素。

2.HashSet

类实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set的迭代顺序:特别是它不保证该顺序恒久不变。此类允许使用null元素。

package com.vince;

import java.util.HashSet;
import java.util.Set;

public class SetDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HashSetDemo();
    }
    /**
     * 1.不允许重复值(通过equals方法来判断)
     * 添加元素时如何判断是否重复,先调用对象的hashCode方法求值,如果hash值在集合中不存在,那么该对象可以添加(不重复的),
     * 如果hash值相同,(还不能确定对象是否相同,因为不同的对象可能产生相同的hashCode值),那么需要再调用equals方法来验证,
     * 
     * 如果需要在程序中有这样的需求,两个对象的值相同就认为两个对象是一个对象,并且使用了HashSet来存储,就需要重写对象(类)
     * 中的hashCode方法和equals方法
     */
    public static void HashSetDemo(){
        System.out.println("----------");
        Set<String> set=new HashSet<String>();
        set.add("小明");
        set.add("小花");
        set.add("小明");
        System.out.println(set.size());//输出的是2,因为不能为重复值
        System.out.println("----------");
        Set<Student> set2=new HashSet<Student>();
        Student stu1=new Student("小刚",16);
        Student stu2=new Student("小花",23);
        Student stu3=new Student("小刚",16);
        set2.add(stu1);
        set2.add(stu2);
        set2.add(stu3);//虽然stu1和stu3的值相同,但是创建了两个内存空间,如果要让stu1和stu3代表同一个对象,则需要重写Student类中的equals方法
        set2.add(stu1);//重复值了,所以不输出
        System.out.println(set2.size());
        System.out.println("----------");
        
    }

}

3.TreeSet

基于TreeMap的NavigableSet实现。使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序,具体取决于使用的构造方法。

Java集合——集合框架Set接口

标签:

原文地址:http://www.cnblogs.com/shenhainixin/p/5128648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!