set集合——HashSet与TreeSet

Set集合

继承于Collection接口,所以set接口拥有所有Collection接口提供的常用方法,如修删改查,不允许包含相同的元素,

set的两个实现类,HashSet和TreeSet。

——HashSet:实现的本质就是HashMap,HashSet里面的元素是无序的。

——TreeSet:里面是元素是有序的。

HashSet实现Set接口,那么它也是一个不包含重复元素的无序集合。

允许使用null,但是有且仅有一个元素为null。

如果要向HashSet集合中存入元素,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据 hashCode值来决定该对象在HashSet中存储位置。如果要把一个对象放入HashSet中,重写该对象对应类的equals方法,也应该重写其hashCode()方法。

简单的说在HashSet中,只有equals()方法返回TRUE时,hashcode值也相同,我们才定义成元素相等。

package com.newer.sf.集合框架体系;

import java.util.HashSet;
import java.util.Iterator;

public class HashSetTest {
 public static void main (String[] args){
  HashSet<String> set= new HashSet<String>();
  
 
  set.add("AA");
  set.add("DD");
  set.add("AA");//重复元素,不进行存储
  set.add("BB");
  set.add("CC");
  set.add("BB");//重复元素,不进行存储
  
  //方式一:通过迭代器
  Iterator<String> iter = set.iterator();
    while(iter.hasNext()){
     String s = iter.next();
     System.out.println(s);
    }
    System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^");
  //方式二  : 增强for
    for(String s :set){
     System.out.println(s);
    }
    
    
 }

}
 

 
 

TreeSet类跟HashSet一样,不允许重复对象,但是是有序的,元素按照自然顺序或者比较器的顺序排序。

TreeSet判断两个对象不相等的方式是两个对象通过equals方法返回false,或者通过CompareTo方法比较 没有返回0

package com.newer.sf.集合框架体系;
import java.util.Iterator;
import java.util.TreeSet;

public class TreeSetDemo {

 public static void main(String[] args) {

  TreeSet<String> set = new TreeSet<String>();

  set.add("北京");
  set.add("南京");
  set.add("南昌");
  set.add("天津");

  for (String s : set) {
   System.out.println(s);
  }
 }

}

  

注意:TreeSet是自动进行排序的,不可以存放null值。

猜你喜欢

转载自suifan0116.iteye.com/blog/2363765