我的学习阶段是跟着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学习之路——基础阶段二(第三篇)的更多相关文章

  1. #Java学习之路——基础阶段二(第一篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  2. #Java学习之路——基础阶段二(第九篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  3. #Java学习之路——基础阶段二(第二篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  4. #Java学习之路——基础阶段(第三篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  5. #Java学习之路——基础阶段二(第十篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  6. #Java学习之路——基础阶段二(第八篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  7. #Java学习之路——基础阶段二(第七篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  8. #Java学习之路——基础阶段二(第六篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  9. #Java学习之路——基础阶段二(第五篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

随机推荐

  1. [求教]利用typescript对Javascript做强类型检测提示

    近期在学习typescript的时候,发现ts居然可以对原生js做强检测.发现从v2.3就开始直接了.这让我感叹他的变化,又让我自己感到学习的缓慢.本文章就对他小试牛刀一下. 一.他是的使用与支持 通 ...

  2. Containerd 简介

    我们可以把 docker 抽象为下图所示的结构(此图来自互联网): 从图中可以看出,docker 对容器的管理和操作基本都是通过 containerd 完成的. 那么,containerd 是什么呢? ...

  3. ZooKeeper入门搭建教程

    http://www.wxdl.cn/cloud/zookeeper-build.html 本文是ZooKeeper的快速搭建,旨在帮助大家以最快的速度完成一个ZK集群的搭建,以便开展其它工作.本方不 ...

  4. Day1----Python学习之路笔记(1)

    学习路线 Day1 Day2 Day3 Day4 Day5 ...待续 一.了解开发语言 1.高级语言:Python,Java,C++,C#,PHP,JS,Go,Ruby,SQL,Swift,Perl ...

  5. 运行yum时出现/var/run/yum.pid已被锁定,PID为xxxx的另一个程序正在运行的问题解决

    出现问题 [root@localhost ~]#yum update 已加载插件: fastestmirror,security /var/run/yum.pid已被锁定,PID为1610的另一个程序 ...

  6. springboot中使用自定义两级缓存

    工作中用到了springboot的缓存,使用起来挺方便的,直接引入redis或者ehcache这些缓存依赖包和相关缓存的starter依赖包,然后在启动类中加入@EnableCaching注解,然后在 ...

  7. Java的参数传递是「值传递」还是「引用传递」?

    关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题. 有人说Java中只有值传递,也有人说值传递和引用传递都是存在的,比较容易让人产生疑问. 关于值传递和引用传递其实需要分情况看待. ...

  8. Oracle保留小数点后两位的几种方法

    有时候在做数据处理的时候,在前台页面上显示的数字需要保留小数点的后两位,不足两位的用0代替,这个时候就需要对数据做一些处理了.如果只用round(value,2)(四舍五入)和trunc(value, ...

  9. CopyOnWriteArrayList简介

    CopyOnWriteArrayList,写数组的拷贝,支持高效率并发且是线程安全的,读操作无锁的ArrayList.所有可变操作都是通过对底层数组进行一次新的复制来实现. CopyOnWriteAr ...

  10. ASP.NET Core Identity Hands On(2)——注册、登录、Claim

    上一篇文章(ASP.NET Core Identity Hands On(1)--Identity 初次体验)中,我们初识了Identity,并且详细分析了AspNetUsers用户存储表,这篇我们将 ...