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;
}
}
|
|