#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疯狂讲义(第四版)里面的内容. 前言: ...
随机推荐
- 4. 整合MyBatis
mybatis既有jdbc的灵活,有具有orm工具的方便,是一套很好用的工具,这儿就使用mybatis来作为数据访问工具,具体添加过程如下: 1. 添加mybatis依赖,并更新项目 <depe ...
- Win7 系统记事本乱码及cmd闪退解决办法
打开控制面板,点击时钟.语言和区域 中文(简体)改为英语(英国),然后重启电脑,重启电脑之后,继续此操作,在把英语(英国)改为中文(简体),再次重启电脑,就OK了.
- 开机进入grub命令行之后。。。。
最近由于经常整理自己电脑上的文件,难免都会遇到误删系统文件或者操作失误导致系统不能够正常进入的情况.这时就会出现grub错误的提示,只能输入命令才能进入系统.那么该输入什么命令呢?其实非常简单. gr ...
- 「SDOI 2018」战略游戏
题目大意: 给一个$G=(V,E)$,满足$|V|=n$,$|E|=m$,且保证图联通,有Q个询问,每组询问有s个点,求图中有多少点满足:将其删去后,这s个点中存在一对点集$(a,b)$不联通且删去点 ...
- BZOJ_1801_[Ahoi2009]chess 中国象棋_DP
BZOJ_1801_[Ahoi2009]chess 中国象棋_DP Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像 ...
- vue iview UPload,但文件上传是,clearFiles的使用方法
<template> <div> <button @click="clearUploadedImage">重新上传</button> ...
- 深入理解java虚拟机之垃圾收集器
Java一个重要的优势就是通过垃圾管理器GC (Garbage Collection)自动管理和回收内存,程序员无需通过调用方法来释放内存.也因此很好多的程序员可能会认为Java程序不会出现内存泄漏的 ...
- 认识容器和Docker(一)
前言: 这句话应该是开发人员经常挂在嘴边的吧! “在我的机器上是正常工作的啊,MD,怎么到你这就不行了?” 开发人员就会联想到: 1. 肯定是你环境有问题: 2. 要么就是你个傻*不会用吧: 带着这句 ...
- redis与CPU、内存
任何一个后端应用,包括代码都要考虑对于CPU和内存的影响.redis本质上类似于nodejs,单进程.单线程,事件驱动,但不同的是redis是CPU密集型的.这里列出了redis与内存CPU的相关考虑 ...
- python设计模式-观察者
定义: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖的对象都会得到通知并被自动更新. 观察者模式是对象的行为模式,又叫发布-订阅(pubish/subscribe)模式,模型 ...