java--集合2---泛型、二叉树、TreeSet

泛型

<>:在不知道传入什么类型参数的时候,使用泛型

1、泛型接口

interface Inter<T>{
    public abstract void show(T t);
}

实现接口可以继续将参数设置成泛型,然后在创建实现类的时候确定参数类型

也可以直接确定参数类型

2、泛型类

class  A<T>{
	private T t;
}
//在创建类对象的时候确定参数类型

3、泛型方法

public static <T> void show(T t){
    sout(t);
}

4、泛型的通配符

/<?>:任意的类型

/<? extends Number>:Number或者Number的子类

/<? super Number>:Number或者Number的父类

TreeSet集合:

set:没有索引、无序、没有重复元素
TreeSet:底层:红黑树、提高查找速率 可以对元素排序
HashSet:可以对元素去重

TreeSet集合排序:

1、自然排序(comparable接口)
a: 让自定义的类实现Comparable接口,复写compreTo方法
b: 在compareTo方法中提供排序规则,如果compareTo方法返回0说明元素重复

  1. 比较器排序(Comparator接口)

a: 在创建TreeSet集合时,把Comparator对象作为参数传递
b: 在创建Comparator对象时,复写compare方法,提供排序规则,如果compare方法返回0说明元素重复。

  1. 如何选择排序方式:
    a: 优先使用自然排序
    b: 如果API中有些类已经实现了Comparable接口,提供了默认排序规则,但是这个规则不满足要求.这时可以使用比较器排序自定义排序规则.

扩展:API提供了一个Collections工具类,可以对List集合排序
ArrayList list = new ArrayList<>();
list.add(new Student(“wangwu”,20));
list.add(new Student(“lis”,30));
list.add(new Student(“zhaoliu”,10));
list.add(new Student(“qianqi”,40));

//对list进行排序,Collections
Collections.sort(list, new Comparator<Student>() {
	@Override
	public int compare(Student o1, Student o2) {
		return o1.getAge()-o2.getAge();
	}
}); 
System.out.println(list);

二叉树

二叉树:一个跟节点,每一个节点最多只有两个子节点

二叉查找树:(二叉搜索树、二叉排序树)任意一个节点左边的都比自己小,右边的比自己大

二叉平衡树:任何一个节点它的左子树和右子树的高度差不超过1;

添加元素时,可能会导致二叉平衡树不平衡,这时候需要左旋或者右旋进行调整。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值