1. Java中hashSet集合
class="java" name="code">
HashSet的add()方法返回ture添加成功,返回false添加失败。HashSet是没有顺序的。
public class SetTest1 {
public static void main(String[] args){
HashSet set = new HashSet();
System.out.println(set.add("a"));
set.add("b");
set.add("c");
set.add("d");
System.out.println(set.add("a"));
System.out.println(set);
}
}
运行结果:
true
false
[d, b, c, a]
set集合不会存储重复的元素,具体是比较两个引用调用hashCode方法得到的结果是否相同!
import java.util.HashSet;
public class SetTest2{
public static void main(String[] args){
HashSet set = new HashSet();
String s1 = new String("a");
String s2 = new String("a");
System.out.println("hash code: " + (s1.hashCode() == s2.hashCode()));
set.add(s1);
set.add(s2);
System.out.println(set);
}
}
运行结果:
hash code: true
[a]
set集合增加时候的步骤:
1) 当使用HashSet时,hashCode()方法就会得到调用,判断已经存储在集合中的对象的hashcode值是否与增加的对象的hashcode值一致;
2) 如果不一致,直接加进去;如果一致,再进行equals方法的比较,equals方法如果返回true,表示对象已经加进去了,就不会再增加新的对象,否则加进去。
2. Java中treeSet集合
Collections的reverseOrder()方法是自然顺序的反序的排序,sort()方法是对指定集合的排序。
Collections的shuffle()方法是随机排序。
Collections的max()和min()方法。
1. 元素自身具备比较性,需要元素实现Comparable接口,重写compareTo方法。叫做元素的自然排序(默认排序)。
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class TreeSetTest2{
public static void main(String[] args){
TreeSet set = new TreeSet(new PersonComparator());
Person p1 = new Person(10);
Person p2 = new Person(20);
Person p3 = new Person(30);
Person p4 = new Person(40);
set.add(p1);
set.add(p2);
set.add(p3);
set.add(p4);
for(Iterator iter = set.iterator(); iter.hasNext();){
Person p = (Person)iter.next();
System.out.println(p.score);
}
}
}
class Person{
int score;
public Person(int score){
this.score = score;
}
public String toString(){
return String.valueOf(this.score);
}
}
class PersonComparator implements Comparator{
public int compare(Object arg0, Object arg1){
Person p1 = (Person) arg0;
Person p2 = (Person) arg1;
return p2.score - p1.score;
}
}
运行结果:
40
30
20
10
2. 元素自身不具备比较性,或者具备的比较性不是所需要的,需要定义一个类实现接口Comparator,重写compare方法,并将该接口的子类实例对象作为参数传递给TreeMap集合的构造方法。
当Comparable比较方式和Comparator比较方式同时存在时,以Comparator的比较方式为主。
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class TreeSetTest3{
public static void main(String[] args){
TreeSet set = new TreeSet(new MyComparator());
set.add("C");
set.add("A");
set.add("B");
set.add("E");
set.add("a");
set.add("F");
set.add("D");
for(Iterator iter = set.iterator(); iter.hasNext();){
String value = (String)iter.next();
System.out.println(value);
}
}
}
class MyComparator implements Comparator{
public int compare(Object arg0, Object arg1){
String s1 = (String)arg0;
String s2 = (String)arg1;
return s2.compareTo(s1);
}
}
运行结果:
a
F
E
D
C
B
A
推荐博客:https://blog.csdn.net/qq_33642117/article/details/52040345