HashSet
HashSet按照哈希算法存储集合中的元素,提高集合元素的存储速度,向集合中添加一个元素时,
HashSet会调用该元素的hashCode()方法,获取哈希吗,然后根据这个哈希码计算出该元素在集合中的存储位置
注意:在Set集合中的元素是不能重复的
package HashSetClass;
import java.util.HashSet;
import java.util.Iterator;
public class SetDemo {
public static void main(String[] args) {
HashSet<String> name = new HashSet<>();
name.add("大大大");
name.add("小小小");
name.add("大大大");
name.add("小小小");
name.add("中");
System.out.println("集合中的个数是:" + name.size() + "具体如下:");
Iterator<String> it = name.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
TreeSet
TreeSet类同时实现了Set接口和SortSet接口。可以实现对集合的升序排序。
TreeSet包含的常用方法:
E first():返回集合第一个元素
E last():返回集合最后一个元素
E poolFirst():获取并移除集合第一个元素
E poolLast():获取并移除集合最后一个元素
SortSet subSet(E fromElement, E toElement):返回一个新集合,包含原集合fromElement和toElement之间的对象,
前包括后不包括
SortSet headSet(E toElement):返回一个新集合,包含原集合toElement之前的对象,不包括toElement
SortSet tailSet(E fromElement):返回一个新集合,包含原集合fromElement之后的对象,包括fromElement
package HashSetClass;
import java.sql.SQLOutput;
import java.util.Iterator;
import java.util.Scanner;
import java.util.SortedSet;
import java.util.TreeSet;
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet<Double> gz = new TreeSet<>();
Scanner myinput = new Scanner(System.in);
for (int i = 0; i < 6; i++) {
System.out.println("输入第" + (i+1) + "位的工资");
double sr = myinput.nextDouble();
gz.add(sr);
}
Iterator<Double> it = gz.iterator();
System.out.println("工资从低到高:");
while(it.hasNext()) {
System.out.println(it.next());
}
//显示工资比6000低的工资
SortedSet<Double> low = gz.headSet(6000.0);
System.out.println("显示工资比6000低的工资");
for (int i = 0; i < low.toArray().length; i++) {
System.out.println(low.toArray()[i]+"\t");
}
//显示工资比8000高的工资
SortedSet<Double> high = gz.tailSet(8000.0);
System.out.println("显示工资比8000高的工资");
for (int i = 0; i < high.toArray().length; i++) {
System.out.println(high.toArray()[i]+"\t");
}
}
}
输入第1位的工资
3000
输入第2位的工资
6000
输入第3位的工资
7000
输入第4位的工资
8000
输入第5位的工资
4000.6
输入第6位的工资
10000.2828
工资从低到高:
3000.0
4000.6
6000.0
7000.0
8000.0
10000.2828
显示工资比6000低的工资
3000.0
4000.6
显示工资比8000高的工资
8000.0
10000.2828