java day15

本文围绕Java展开,介绍了TreeSet可对集合元素排序,底层是二叉树,保证元素唯一靠compareTo方法,有自然顺序和集合自身比较两种排序方式;还阐述了泛型,它是安全机制,能将运行问题转移到编译期,包括泛型类、泛型方法及泛型限定的相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

treeset

可以对set集合中元素进行排序
底层数据结构是二叉树
保证元素唯一性的依据是compareTo方法return 0

  • 自然顺序
    让元素自身具备比较型,元素需要实现comparable接口,覆盖compareto方法,这种方式也称为元素的自然顺序

  • 第二种排序方式
    当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性。在集合初始化时就有了比较方式。

treeset练习

  • 按照字符串长度排序,字符串本身具备比较性,但是它的比较方式不是所需要的,这时就只能使用比较器。

泛型

用于解决安全问题,是一个安全机制
好处:
1。将运行时期出现问题classCastException转移到了编译时期,方便于程序员解决问题,让运行时问题减少,安全。
2.避免了强制转换的麻烦通常
ArrayList al=new ArrayList();
Iterator it=al.iterator();

  • 格式
    通过<>来定义要操作的引用数据类型
    在集合框架中很常见,只要见到<>就要定义泛型,<>用来接收类型

泛型类

  • 什么时候定义泛型类?当类中要操作的引用数据类型不能确定的时候
class Utils<QQ>
{
private qq;
public void setobject(QQ q)
{
this.q=q;
}
public QQ getobject()
{
return q;
}
}
Utils<worker> u = new Utils<worker>();
u.setObject(new worker());

泛型方法

class demo
{
	public <T> void show(T t)
	{
		System.out.println("show"+t);
	}

	public <Q> void show(Q q)
	{
		System.out.println("show"+q);
	}
}
demo d=new demo();
d.show("hh");
d.show(new Integer(4));
d.print("heihei");
  • 静态方法不可以访问类上定义的泛型,如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上
public static <W> void method(w t)
{}

泛型限定

?通配符 也可以理解为占位符

import java.util.*;
class generic
{
	public static void main(String[] args) {
		ArrayList<String> al=new ArrayList<String>();

		al.add("abc1");
		al.add("abc2");
		al.add("abc3");

		ArrayList<Integer> all=new ArrayList<Integer>();
		all.add(4);
		all.add(5);
		all.add(2);

		printcol(al);
		printcol(all);

	}

	public static void printcol(ArrayList<?> al)
	{
		Iterator<?> it = al.iterator();
		while(it.hasNext())
		{
			System.out.println(it.next());
		}
	}
}

?extends E:可以接收E类型或者E的子类型。上限
?super E:可以接收E类型或者E的父类型。下限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值