Collection接口这样学不迷路!(List、Set、SortedSet、Queue)第二篇
Set接口的常用子类:
1.HashSet:里面不能存放重复的元素,而且是采用散列的存放方法,没有顺序
package com.set;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class setdemo01 {
public static void main(String[] args) {
Set<String> allSet = new HashSet<String>();//HashSet对输入的数据进行无序存放
allSet.add("A");
allSet.add("B");
allSet.add("C");
allSet.add("C");
allSet.add("C");
allSet.add("D");
allSet.add("E");
System.out.println(allSet);
}
}
[D, E, A, B, C]
2.TreeSet:里面不能存放重复的元素,但是采用有序的存储方法
package com.set;
import java.util.Set;
import java.util.TreeSet;
public class setdemo01 {
public static void main(String[] args) {
Set<String> allSet = new TreeSet<String>();//TreeSet对输入的数据进行有序存放
allSet.add("B");
allSet.add("E");
allSet.add("C");
allSet.add("C");
allSet.add("A");
allSet.add("C");
allSet.add("D");
System.out.println(allSet);
}
}
[A, B, C, D, E]
自定义类排序,指定排序规则(重复元素不能加入):
package com.set;
import java.util.Set;
import java.util.TreeSet;
//自定义类排序,指定排序规则
class Person implements Comparable<Person>{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){ //覆写ToString()方法
return "姓名:"+this.name+";"+"年龄:"+this.age;
}
@Override
public int compareTo(Person pp) { //覆写compareTo()方法,指定排序规则
if(this.age>pp.age){ //通过年龄排序
return 1;
}else if(this.age<pp.age){
return -1;
}else{
return 0;
}
}
}
public class SetDemo02 {
public static void main(String[] args) {
Set<Person> allSet = new TreeSet<Person>();
allSet.add(new Person("666",30));
allSet.add(new Person("222",45));
allSet.add(new Person("555",25));
System.out.println(allSet);
}
}
[姓名:555;年龄:25, 姓名:666;年龄:30, 姓名:222;年龄:45]
去掉重复元素:
package com.set;
import java.util.HashSet;
import java.util.Set;
class Persons{
private String name;
private int age;
public Persons(String name,int age){
this.name=name;
this.age=age;
}
public boolean equals(Object obj){
if(this==obj){
return true;
}
if(!(obj instanceof Persons)){
return false;
}
Persons p=(Persons) obj;
if(this.name.equals(p.name)&&this.age==p.age){
return true;
}else{
return false;
}
}
public int hashCode(){
return this.name.hashCode()*this.age;
}
public String toString(){ //覆写ToString()方法
return "姓名:"+this.name+";"+"年龄:"+this.age;
}
}
public class SetDemo03 {
public static void main(String[] args) {
Set<Persons> allSet = new HashSet<Persons>();
allSet.add(new Persons("666",30));
allSet.add(new Persons("222",45));
allSet.add(new Persons("555",25));
allSet.add(new Persons("444",25));
allSet.add(new Persons("333",25));
allSet.add(new Persons("111",45));
System.out.println(allSet);
}
}
[姓名:111;年龄:45, 姓名:444;年龄:25, 姓名:333;年龄:25, 姓名:555;年龄:25, 姓名:222;年龄:45, 姓名:666;年龄:30]
SortedSet接口:
package com.set;
import java.util.SortedSet;
import java.util.TreeSet;
public class SetDemo04 {
public static void main(String[] args) {
SortedSet<String> allSet = new TreeSet<String>();
allSet.add("A");
allSet.add("B");
allSet.add("C");
allSet.add("C");
allSet.add("C");
allSet.add("D");
allSet.add("E");
System.out.println("第一个元素:"+allSet.first());
System.out.println("最后一个元素:"+allSet.last());
System.out.println("从开始到指定元素的集合:"+allSet.headSet("C"));
System.out.println("从指定元素到最后:"+allSet.tailSet("C"));
System.out.println("返回指定对象间的元素:"+allSet.subSet("B","D"));
}
}
第一个元素:A
最后一个元素:E
从开始到指定元素的集合:[A, B]
从指定元素到最后:[C, D, E]
返回指定对象间的元素:[B, C]
认真看过此篇的小伙伴,如果对你有收获,请点击旁边的小手推荐一下,如果有误,欢迎指正,谢谢!
版权声明:此篇为本人原创,转载请标明出处 https://www.cnblogs.com/YQian/p/10847304.html
我的博客园地址:https://www.cnblogs.com/YQian/