- 博客(43)
- 收藏
- 关注
原创 开发中如何选择集合实现类(记)
无序:HashSet 底层是HashMap,维护了一个哈希表(数组+链表+红黑树)插入与取出顺序一致:LinkedHashSet 维护数组+双向链表。增删多:LinkedList 底层维护了一个双向链表。键无序:HashMap 底层是哈希表 jdk8:数组+链表+红黑树。先判断存储对象(一组对象[单列] 或 一组键值对[双列])读取文件Properties。一组对象[单列]:Collection接口。键排序:TreeMap。一组键值对[双列]:Map。主要取决于业务操作特点。
2024-07-19 12:13:05
162
原创 Hashtable
继承了Hashtable类,且实现了Map接口 ,同样以键值对的形式来保存数据,但键和值都是字符串类型使用特点和Hashtable类似,所以k-v都不能为nullProperties 还可以用于从 xx.properties文件中,加载数据到Properties类对象,并进行读取和修改xxx.properties通常作为配置文件(io流中有)
2024-07-19 11:58:08
206
原创 数组 59.螺旋矩阵Ⅱ
需要考虑多个点如何进行处理,即处理时每行从第几个数开始,到第几个数结束,这里选择左闭右开圈数问题,多圈数需要往进旋转,会产生边界待处理数字的增多,可自行画n=3,n=5时的情况,若不考虑此情况,致使后续圈一直在第一圈的位置进行覆盖还需要考虑每一圈的起始位置,若不考虑,同上一问题,后续的值会对前面的值进行覆盖。
2024-07-18 18:54:22
129
原创 209.长度最小的子数组 数组 双指针 滑动窗口
因为只需要一个最小值,所以每次只保留一个值即可,这里选择用一个足够大的值与窗口值,即Integer.MAX_VALUE,第一次满足要求后,将获取到的窗口长度与其相比,取小。一定能够将length更新为此时的窗口长度,即length为第一次窗口长度。第二次比较时,length代表第一次窗口长度,right-left+1,为第二次满足要求的长度,以此类推。还有一个关键在于,如何获得最小的窗口长度,每次满足要求,窗口长度都会变化,如何能不断更新以获得其最小值。滑动窗口,重点在如何保持移动。
2024-07-17 17:18:38
204
原创 数组 牛客网
108从100开始,第二个102a数组比b数组长char;char第一个是 字符串,第二个是字符数组 ,字符串以'\0'为结束符号,字符数组不用。它们长度相 同,但是占的内存字节数是不一样的数组A的每个元素需要4个字节存放,数组有8行 10列,若数组以行为主顺序存放在内存SA开始的存储区中,则A中8行5列的元素的位置是(SA+2968行5列元素的位置,指的是起始位置,即上个元素的终止位置若二维数组 a 有 m 列,则计算任一元素 a[i][j] 在数组中的位置公式为(
2024-07-17 16:32:26
317
原创 数组 704.二分查找法
middle = (left + right)/2 与 left+ (right - left)/2两个最大值的int类型相加,可能会造成越界,目的是求均值,故先减后加,防止越界。
2024-07-16 16:29:32
141
原创 Set接口 HashMap HashSet
Set接口是Collection的子接口,常用方法和Collection相同。执行add方法后,实际上返回一个boolean值。底层机制说明 0519 - 0524。
2024-07-16 15:37:57
205
原创 List接口, ArrayList Vector LinkedList
Collection接口的子接口子类Vector,ArrayList,LinkedList1.元素的添加顺序和取出顺序一致,且可重复2.每个元素都有其对应的顺序索引。
2024-06-29 19:00:25
451
原创 集合,Collection接口
可动态保存任意多个对象,使用比较方便提供了一系列方便操作对象的方法:add,remove,set,get等使用集合添加删除新元素,代码简洁明了。
2024-06-29 17:46:01
282
原创 练习 String翻转 注册处理 字符串统计
输入 Tony Smith Willam 输出 Willam Tony W。输入用户名,密码,邮箱,输入正确,则提示注册成功,否则生成异常对象。将字符串中指定部分进行翻转。
2024-06-29 16:24:19
187
原创 StringBuffer
长度可变,是一个容器,在父类AbstractStringBuffer中有属性char[]value,存放在堆中StringBuffer为final类,不能被继承保存的是字符串变量,更新值时不用更新地址。
2024-06-26 20:09:59
216
原创 String常用方法
split=poem.split("\/\/") // 有特殊字符,需加入转义符\。获取字符串对象最后一次出现的索引,从零开始,若无,返回-1。获取字符串对象第一次出现的索引,从零开始,若无,返回-1。2.长度相同或不同,但可以区分大小,就返回。左闭右开 ,获取从0开始,到4的字符。1.长度相同,内容相同,返回0。将s1中的a替换成b。
2024-06-26 16:37:54
157
原创 包装类wrapper,String
先从堆中创建空间,里面维护了value属性,指向常量池“a”的空间。如果没有,重新创建。如 果有,直接通过value指向,最终指向堆中的空间地址。先从常量池查看是否有“a” 的数据空间,如果有直接指向,如果没有,则创建一个,再指向。s 指向的是常量池的空间地址。
2024-06-26 16:05:26
154
原创 异常
程序中出现错误,该错误并没有在Throwable的子类中描述,此时可以自己设计异常类,用来描述该错误信息1.定义类:自定义类名,继承Exception(编译异常),或RuntimeException(运行异常)
2024-06-17 21:23:03
708
原创 枚举,注解
使用Annotation时要在前面增加 @ 符号,并把该Annotation当做一个修饰符使用,@Override:限定于某个方法,是重写父类方法,只能用于方法@Override注解,若写,系统就会去检查该方法是否重写了父类的方法,如果没有,则报错@Target是修饰注解的注解,称为元注解@Deprecated:用于表示某个程序元素(类,方法等)已过时a.hi();//1.@Deprecated 修饰某个元素,表示该元素已经过时//2.即 不推荐使用,但仍可以使用。
2024-06-15 19:26:01
901
原创 内部类
一个类的内部又完整的嵌套了另一个类结构,被嵌套的类称为内部类,嵌套其他类的类称为外部类外部其他类:即其他类特点:可以直接访问私有属性,并且可以体现类与类之间的包含关系PS:底层源码中,有大量的内部类。
2024-06-14 21:23:23
246
原创 接口
就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来,(确实很像抽象)实现接口,就是实现接口的方法。
2024-06-14 20:17:52
285
原创 抽象类
比如,animal有多个子类,都会继承eat()方法,子类需要继承该方法,但各自的实现不同,即父类实现了eat()方法,没有意义,此时就可以将父类和该方法声明为abstract抽象方法就是没有实现的方法,不能有方法体抽象类会被继承,由子类实现。
2024-06-14 16:46:23
124
原创 设计模式
1.采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法人话:一个类只能有一个对象实例,只存在一个方法来获得这个唯一的对象2.饿汉式,懒汉式:①构造器私有化②类的内部创建对象③向外暴露一个静态的公共方法,用于获取对象④代码实现。
2024-06-14 15:22:52
150
原创 代码块
又名初始化块,没有方法名,没有返回,没有参数,只有方法体,而且不用通过对象或类显式调用,而是在加载类时,或创建对象时隐式调用基本语法1.修饰符可写可不写,若写只能写static2.static修饰的叫静态代码块,没有static修饰的叫普通 /非静态代码块3.逻辑语句没有限制4.;可写可不写代码块的调用优先于构造器,当多个构造器中都有重复语句,可以抽取到初始化块中,提高代码的重用性。
2024-06-14 14:36:07
349
原创 static,main
又名静态变量static同一个类所有对象共享static类变量,在类加载的时候就生成了(类加载)随类的创建创建,随类的消亡消亡。
2024-06-13 22:01:50
272
原创 java零钱通项目
1.一串代码尽量只完成一个功能,便于代码的可读性和维护性。零钱通,实现收益入账,消费,查看明细,退出系统等功能。2.判断条件,找出不正确的进行判断。
2024-06-12 17:13:47
112
原创 hashcode,toString,finalize,final
由Object类定义的hashcode会针对不同的对象返回不同的整数(通过将该对象的内部地址值转换成一个整数来实现)但不能将hashcode等价于地址。
2024-06-09 20:05:51
231
原创 重写equals
如果是两个对象进行比较,则判断的是地址是否相同,但如果我们需要判断两个对象中的内容是否相同,达不到我们想要的效果,因此我们需要重写equals方法。输出结果false,因为p1 p2 指向了不同的地址,我们需要判断的是他们的内容。
2024-06-09 19:20:54
186
原创 重写,多态
子类中有一个方法,与父类中的一个方法,名称、返回类型、参数都一样PS:1.子类返回类型若是父类返回类型的子类,也定义为重写。如String是Object的子类2.子类方法不能缩小父类的访问权限(public -> protected ->默认 -> private),可以扩大重载就是多个方法同名,但形参不同。重写为子类与父类方法相同。
2024-06-09 17:47:38
692
原创 继承,super
关键词extends,子类继承父类的所有非私有的属性和方法私有的属性和方法可以通过在父类定义一个公共的方法访问假设父类有一私有属性(年龄),私有方法(输出年龄),可通过以下代码进行调用。
2024-06-08 21:46:26
203
原创 重载 +可变参数+ 构造器
系统默认有一个无参构造器,若已经定义,则无法使用这个无参构造器,但可以重新定义一个。参数数目可自定义,也可多个类型参数,但只能有一个可变参数,且必须在末尾位置。可变参数本质上是一个数组,即使用时以数组方式使用,也可以输入数组作为参数。不同方法重名,但形参不同。可以是数量不同,也可以是参数类型不同。构造器名与类名相同,无返回值,系统自动调用,也可重载。如person( ){ }PS:返回类型不会影响。
2024-06-07 16:34:54
206
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人