#Java学习之路——基础阶段二(第三篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容。
前言:此随笔主要是Java基础中的基础,相信大家对这方面肯定有着自己的理解和认识,具体详解可以参照万能的baidu,有的我就一笔带过,希望在我的学习之路上能够有大牛进行指导,也有更多的小伙伴共勉。
1.数据结构
常见的数据结构有:栈,队列,链表,数组,红黑树。
栈(stack):原则是先进后出,线性表。
队列(queue):原则是先进先出,线性表。
数组(Array):有序的元素序列,优点:查询快;缺点:增删慢。
链表(Linked list):以node(节点)生成的炼表,优点:增删快;缺点:查询慢。
红黑树(binary tree):是每个节点不超过2个的有序树速度特别快,趋近于平衡树,查询叶子树节点最少和最多次数不多余二倍。
2.List集合
回归正题在第二篇学习了Collection接口之后,现在就是Collection的子类。
list接口的特点:1.它是一个有存储有序的集合。
2.它是一个带有索引的集合。
3.集合中可以有重复的元素。
List接口的常用方法:
·add 增加指定元素到指定位置
·get 获取指定位置的元素
·remove 移除指定位置的元素
·set 用指定的元素替换指定位置的元素
List接口的子类:ArrayList
LinkedList
3.Set集合
Set接口的特点:1.它是一个无序的集合。
2.它存储的元素是不可以重复的。
3.在HashMap中为了保证元素的唯一性,要依赖于equals方法和hashcode方法
HashSet的存储结构:哈希表实现的
哈希表要进行了解:底层是链表+数组实现,但是在JDK8之后采用了链表+数组+红黑树(当链表的长度超过8之后使用)的方法进行实现。在采用红黑树后极大的优化了HashMap的效率
HashSet存储自定义元素的时候要注意的是一定要覆盖重写equals方法和hashcode方法一般的IDE工具会提供快捷的书写方式。
Set是一个无序的集合,那么子下的HashSet也是一个无序的集合如果想要有序的集合,那么可以采用LinkedHashSet来进行元素的排序。
这里的遍历也是可以使用Iterator迭代器或者是foreach来进行的。
扩展:可变参数:
在之前定义参数的时候是对参数个数有一定的了解,但是如果说遇到同类型的多个参数可以使用可变参数的定义方法进行使用从而达到代码的灵活和简化:
格式:修饰符 返回值 方法名(参数类型...参数名){}
这个格式和之前认知的在参数列表中传入数组的道理也是等价的。
4.Collections
这里的Collection加了s是集合的工具类,肯定有常用的功能方便对多数据的使用:
·addAll 这里可以添加多个元素;
·shuffle 打乱集合内的顺序
·sort 将集合元素按照默认规则排序(从小到大)
这里的sort传入的值不一样可以为Comparator自定义规则进行排序
Comparator比较器:
首先来了解一下比较器有Comparable接口和Comparator比较器,使用的sort就是实现了Comparable接口比较死板,如果是想要灵活的进行比较可以使用Comparator接口
那么要实现这个接口里的比较方法就要覆盖重写里面的compare方法来规定比较的规则。
但是对于自定义的类进行比较的话,那就要实现comparable接口重写compareTo方法来进行排序。如果要独立的定义规则也可以采用Collection.sort方式自定义规则重写Compare方法,如果要实现多规则的话就可以在自定义重写的规则里添加if判断句进行再次排序。
#Java学习之路——基础阶段二(第三篇)的更多相关文章
- #Java学习之路——基础阶段二(第一篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第九篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第二篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段(第三篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第十篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第八篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第七篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第六篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第五篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
随机推荐
- sql server 高可用故障转移(完结)
安装完二个sql server 节点后,对外的虚拟ip是192.168.2.105 测试将sql server转到另一节点 转移后连接sql 虚拟ip 测试 通过windows日志查看远行状态 总结 ...
- toFixed()一不小心踩了一个坑
toFixed,多么简单的一个函数,昨天突发奇想做两道算法题练练手.结果,踩到了一个从未遇到的坑! \n 简单来讲是要对输入的很多组数据,自己写一个函数做个处理,把每次函数处理的结果要相加求和.最后输 ...
- Android 沉浸式状态栏攻略 让你的状态栏变色吧
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/48649563: 本文出自:[张鸿洋的博客] 一.概述 近期注意到QQ新版使用了 ...
- BZOJ_1345_[Baltic2007]序列问题Sequence_单调栈
BZOJ_1345_[Baltic2007]序列问题Sequence_单调栈 Description 对于一个给定的序列a1,…,an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai ...
- BZOJ_4773_负环_倍增弗洛伊德
BZOJ_4773_负环 Description 在忘记考虑负环之后,黎瑟的算法又出错了.对于边带权的有向图 G = (V, E),请找出一个点数最小的环,使得 环上的边权和为负数.保证图中不包含重边 ...
- nginx + tomcat 反向代理
简单的配置:# my test java+nginx project server { listen ; server_name localhost; root /home/user/Desktop/ ...
- java 基本类型包装类,system类,Math类,Assrays类,大数据运算
实现字符串与基本数据之间转换 将字符串转成基本数据类型方法 例如:将字符串转成成int类型 String str ="123"; int a =Integer.parseInt(s ...
- java的8种基础类型
一.基础类型 Java 是一种强类型语言 . 这就意味着必须为每一个变量声明一种类型 : 在 Java 中,一共有 8种基本类型 ( primitive type ) , 其中有 4 种整型 . 2 ...
- 浏览器加载 CommonJS 模块的原理与实现
就在这个周末,npm 超过了 cpan ,成为地球上最大的软件模块仓库. npm 的模块都是 JavaScript 语言写的,但浏览器用不了,因为不支持 CommonJS 格式.要想让浏览器用上这些模 ...
- Mybaits-plus实战(二)
1. Mybaits-plus实战(二) 1.1. mybatis-plus插件 1.1.1. 用法 先举个例子介绍用法,如下:直接作为Bean注入,一般来讲插件太多印象性能,所以大部分插件都只在测试 ...