4.3~4.4学习总结

蓝桥杯刷题情况:

 

Java学习情况:

集合:

进一步了解其他单列集合的作用以及双列集合的学习

————

单列集合:

HashSet类:

1:不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也有可能发生变化。

2:hashset不是同步的,多线程访问同一个hashset的时候,必须通过代码实现同步

3:集合元素的值可以是null

底层:通过hash算法计算添加元素的hash值,判断其是否相等(判断标准:hash值和通过equals方法俩者)从而决定元素的存储位置。

————

TreeSet类:

集合元素都处于排序状态(排序方法分俩种:定制排序和自然排序)

自然排序:compareTo(Object obj)方法来比较元素之间的大小,按升序排列。

定制排序:通过接口Comparator接口的帮助(改成降序排列),如果定制排序,则需要提供一个Comparator对象与Treeset集合关联,Comparator对象负责集合元素的排序逻辑,

底层:采用红黑树的数据结构来存储集合元素。

————

EnumSet类:

集合中的元素必须枚举类型的枚举类型,EnumSet的集合元素有序的,EnumSet以枚举值在Enum类内的定义顺序来决定集合元素的顺序。

————

HashSet类,TreeSet类,EnumSet类的线程都是不安全。

双列集合的特点:

1:双列集合一次需要存一对数据,分别为键和值

2:键不能重复,值可以重复;

3:键和值是一一对应,每一个键只能找到自己对应的值

4:键+值这个整体 我们称之为“键值对”或者“键值对对象,在java中叫做Entry对象”

———————

Map是双列集合的顶层接口,它的功能所有双列集合都可以使用

 Map的遍历方式有三种:

键找值,键值对,lambda表达式

————

HashMap类:

与HashSet集合不能保证元素的顺序一样,HashMap也不能保证键值对的顺序,类似于HashSet判断俩个key之间相等标准是:俩个key通过equals方法比较返回true,俩个key的的hashcode值也相等。

————

TreeMap类:

TreeMap就是一个红黑树数据结构,每个键值对作为红黑树的一个节点,存储元素的时候根据键进行对节点的排序。

同样有自然排序和定制排序。

泛型:

java集合有个缺点,一个对象进入集合之后,集合会忘记这个对象的数据类型,当再次取出这个对象的时候,这个对象的编译类型就变成了Object类型(运行时类型没变)

泛型的出现允许程序在创建集合时指定集合元素类型的对象,这保证了在添加元素进入集合的时候,会对这个元素的类型和指定元素一致。

————

泛型就是编写模板代码来适应任意类型;

泛型的好处是使用时不必对类型进行强制转换,它通过编译器对类型进行检查;

————

泛型的细节:

1:泛型中不能写基本数据类型,只能传引用类型

2:指定泛型的具体类型后,传递数据时,可以传入该类类型或者其子类类型(但传入子类类型的情况很少,一般只传入该类类型)

3:如果不写泛型,类型默认为Object

————

泛型可以在很多地方定义:类,方法,接口。

泛型类:当某个数据变量不确定的时候,就可以定义泛型类;

格式;

public class Preson <E>{
//修饰符 class 方法名 <E>{}
//在创建对象的时候确定类型:Person<String>=new Person<>();
}

————

泛型方法:方法中形参列表的类型不确定的时候;

有俩种方案:

1:可以使用类名后面定义的泛型(所有方法都可以用)

格式:和泛型类一样

2:在方法名之后定义属于这个方法的泛型(只有本方法可以用)

格式:

public class Preson {
    public <E>void show(){
        //修饰符 <E> 返回类型 方法名()
    }

—————

泛型接口:

@FunctionalInterface
public interface Swim1<E> {
//修饰符 interse 接口名 <E>
    public abstract void swim();

}

1:实现类给出具体类型

格式:

public class TestInterface implements Swim1<String>{
    @Override
    public void swim() {
        
    }

2:实现类延续泛型,到创建类的时候再确定

格式:

public class TestInterface<E> implements Swim1<E>{
    @Override
    public void swim() {

    }

异常处理:

异常处理稍微入门了一下

error:代表的系统级别错误(属于严重问题)

系统一旦出现问题,sun公司会把这些错误封装成error对象,error是给sun公司用的,不是给我们程序员用的(因此我们不用管)

Exception:异常:

代表程序可能出现的问题,我们通常会用Exception以及它的子类来封装程序出现的问题。

异常分为俩类:

1:运行时异常:

RuntimeException及其子类,编译阶段不会出现异常问题提醒,运行时出现的异常

(如:数组索引越界异常)

2:编译时异常:
编译阶段就会出现异常提醒(如:日期解析异常)

异常最上层分类是Exception。

编译阶段,java不会运行代码,只会检查语法,和做一些代码上的优化.

总结:明日计划,异常处理学习完,MySQL和JDBC编程章节入门,java学习过程中敲代码还是太少了,蓝桥杯备战抓紧,fx页面跳转学习。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡卡卡罗特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值