A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 以梦为码 中级黑马   /  2015-7-19 10:00  /  273 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


Set
特点;
   无序(存入和取出的顺序不一致)
   无下标
   不可重复
1、HashSet:
    底层实现是哈希表
    无序集合
     线程不安全 运行速度快
    如何保证元素唯一性:重写hashCode()与equals()方法
   public int HashCode(){
   return (String)变量.hashCode();
   }
格式:
  HashSet set=new HashSet();
   set.add();
  public class HashSetDemo {
   public static void main(String[] args) {
   HashSet<Student> set = new HashSet<Student>();
         set.add(123);
  set.add(456);
  set.add(456);
  set.add(789);
  set.add(12);
         for(Integer i : set){
System.out.println(i);
   }
  }
     }
   
1-1、LinkedHashSet
     基于链表的哈希表实现,父类是HashSet
     线程不安全,运行速度快
     这个集合是有序的,保证存储和取出的顺序
   
     import java.util.*;
     public class LinkedHashSetDemo {
public static void main(String[] args) {
LinkedHashSet<String> lhs = new LinkedHashSet<String>();
   lhs.add("abc");
   lhs.add("qdd");
          lhs.add("bgefe");
   lhs.add("ht6t");
for(String s : lhs){
System.out.println(s);
  }
}
  }
2、TreeSet
   TreeSet集合自身特性
    无序,不重复 无索引
    线程不安全,运行速度快
    TreeSet集合,会对存储到集合中的对象,进行排序(对象的自然排序)
    底层结构红黑树
  import java.util.TreeSet;
  public class TreeSetDemo {
    public static void main(String[] args) {
   TreeSet<Student> set = new TreeSet<Student>();
set.add("fdd");
set.add("qwe");
set.add("asdf");
set.add("bvd");
set.add("er");
for(String s : set){
System.out.println(s);
  }
}
  }
   TreeSet排序实现特定的顺序来排序
   1、实现Comparable接口,重写comparaTo方法
   
import java.util.*;
public class TreeSetDemo2 {
public static void main(String[] args) {
  //Integer类自然顺序,实现Comparable接口,重写compareTo
  //20,18,23,22,17,24,19,18,24
  TreeSet<Integer> set = new TreeSet<Integer>(new Comparator<Integer>(){
   public int compare(Integer i1,Integer i2){
    return i2 -i1;
   }
  });
  set.add(20);
  set.add(18);
  set.add(23);
  set.add(22);
  set.add(17);
  set.add(24);
  set.add(19);
  set.add(18);
  set.add(24);
  
  for(Integer i : set){
   System.out.println(i);
  }
    }
2、定义比较器
    class IntegerDemo implements Comparator{
  public int compare(Integer i1,Integer i2){
return i2 - i1;
     }
  }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马