java集合 TreeSet和HashSet的使用

  1. java集合框架TreeSet的使用
    -使用说明
    -实现接口
    TreeSet是集合Collection的子类接口Set的实现类,是无序不重复的,但是其输出的结果是有序的,可以实现两种排序方式: 1.自然排序 2.自定义排序
//自然排序
TreeSet set = new TreeSet();
set.add("2");
set.add("1");
set.add("4");
set.add("8");
set.add("6");
set.add("3");
System.out.println(set);
结果:{1,2,3,4,6,8}
//自定义排序实现接口Comparator
//创建TreeSet对象
Com com = new Com();
TreeSet set = new TreeSet(com);//com实现接口的类
//创建比较器类
class Com implements Comparator{
	@Override
	public int compare(Object o1, Object o2) {
		Clea number = (Clea)o1;
		Clea number1 = (Clea)o2;
		if (number1.age ==  number.age) {
			return 0;
		}
		if (number1.age > number.age) {
			return 1;
		} 
		if (number1.age < number.age) {
			return -1;
		}
		return 0;
	}
	@Override
	public String toString() {
		return super.toString() ;
	}
}
//创建Clea类
class Clea{
	int age;
	public Clea(int age){
		this.age = age;
	}
	@Override
	public String toString() {
		return "[" + age + "]";
	}
}

  1. java集合框架HashSet的使用
    -使用说明:
    重复元素的判断机制
    –只要 obj == obj1 认为obj 和obj1是相同的元素
    –equals与hashCode同时相等的时候,认为相同元素
    (HashSet基于HashMap实现的)
    (利用了Hash键不能重复的特点)
import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
public class Test02 {
	HashSet set = new HashSet();
	Person p = new Person();
	    p.name = "张三";
	    p.age = 15;
	    Person p3 = new Person();
	    p3.name = "张三";
	    p3.age = 15;
	    System.out.println(p.equals(p3));
	    set.add(p);
	    set.add(p3);
	    System.out.println(set);
	}
}
class Person implements Comparable {
	String name;
	int age;
	@Override  // 自定输入
	public String toString() {
		return "name = " + this.name + "age =" + this.age;
	}
	@Override  // 自定义相等的规则
	public boolean equals(Object obj) {
	// 如果类型不相等,返回false
	if (!(obj instanceof Person)) {
			return false;
		}
	// 如果名字相同, 返回true
	if (((Person)obj).name.equals(this.name)) {
		return true;
	}
	// 如果名字不相同,返回false
	return false;
	}
	// hashCode
	@Override    // 计算一个对象的hash值
	public int hashCode() {
		return this.name.hashCode();
	}
	// 实现Comparable接口
	@Override
	public int compareTo(Object o) {
		if (o instanceof Person) {
			Person p = (Person)o;
			if (this.age > p.age) { // 大
				return 1; 
			} else if(this.age == p.age) { // 相等
				return 0;
			} else { // 小
				return -1;
			}
		}
		return 0;
	}	
}

发布了42 篇原创文章 · 获赞 10 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/chen449757520/article/details/77949986