我们经常用容器来存放元素,通常而言我们是不关系容器中的元素是否有序,但有些场景可能要求容器中的元素是有序的,这个时候用ArrayList  LinkedList  Hashtable HashMap HashSet 这些容器本身存放的时候就没有办法做到了,这个时候我们有两种思路:第一种思路:对刚刚我们提到的容器类的元素从新排序后存放,就是后面我们要介绍的利用Collections.sort 方法进行排序,第二种思路:是容器在添加元素的时候就进行大小的比较从而来保证元素的排序.下面我开始来详细介绍…
因为最近工作太忙了,连续的晚上支撑和上班,因此没有精力来写下这篇博客,今天上午正好有一点空,因此来复习一下不太常用的集合体系大家族中的几个类:WeakHashMap&EnumMap&LinkedHashMap&LinkedHashSet,以便用到的时候不至于是什么都不知道.好了,言归正传,下面我们开始依次学习下: 一.WeakHashMap 1.WeakHashMap的结构 java.lang.Object ↳ java.util.AbstractMap<K, V> ↳…
上一篇容器元素比较Comparable&Comparator分析的时候,我们提到了TreeMap,但没有去细致分析它,只是说明其在添加元素的时候可以进行比较,从而使得集合有序,但是怎么做的呢?我们下面来进行分析. 一.认识TreeMap 之前的文章讲解了HashMap,它保证了以O(1)的时间复杂度进行增.删.改.查,从存储角度考虑,这两种数据结构是非常优秀的. 尽管如此,HashMap还是有自己的局限性----它们不具备统计性能,或者说它们的统计性能时间复杂度并不是很好才更准确,所有的统计必须…
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第九十五章:方法中可以定义静态局部内部类吗? 下一章 "全栈2019"Java第九十六章:抽象局部内部类详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java…
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第十五章:Unicode与转义字符 下一章 "全栈2019"Java第十六章:下划线在数字中的意义 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组&…
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第二十五章:流程控制语句中循环语句while 下一章 "全栈2019"Java第二十六章:流程控制语句中循环语句do-while 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复…
前面我们已经接触过几种数据结构了,有数组.链表.Hash表.红黑树(二叉查询树),今天再来看另外一种数据结构:栈. 什么是栈呢,我们先看一个例子:栈就相当于一个很窄的木桶,我们往木桶里放东西,往外拿东西时会发现,我们最开始放的东西在最底部,最先拿出来的是刚刚放进去的.所以,栈就是这么一种先进后出( First In Last Out,或者叫后进先出) 的容器,它只有一个口,在这个口放入元素,也在这个口取出元素.那么我们接下来学习JDK中的栈. 一.Vector&Stack的基本介绍和使用 我们先…
前面一章节,我们介绍了集合的类图,那么本节将学习Collection 接口中最常用的子类ArrayList类,本章分为下面几部分讲解(说明本章采用的JDK1.6源码进行分析,因为个人认为虽然JDK1.8进行了部分改动,但万变不离其宗,仍然采用的JDK1.6的引子进行的优化,因此学会了1.6对于1.8也就理解了). 一.ArrayList 的常见功能 在分析ArrayList的源码前,我们先看下ArrayList的常见的功能: package study.collection; import ja…
首先想说的是关于HashMap源码的分析园子里面应该有很多,并且都是分析得很不错的文章,但是我还是想写出自己的学习总结,以便加深自己的理解,因此就有了此文,另外因为小孩过来了,因此更新速度可能放缓了,(#^.^#) 一.HashMap的简单使用 学习任何一个集合,首先最基本的是学会使用,因此首先我们看下如何使用HashMap,以及我们经常使用的方法又有哪些,代码如下: package study.collection; import java.util.HashMap; import java.…
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类.比如new Animal…
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 本文是转载的(尊重原著),原文地址:http://www.cnblogs.com/chenssy/p/3376708.html 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.…
概述 定义:某一类事物的多种存在形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型 猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为动物. 动物 y = new 猫(); 动物是猫和狗具体事物中抽取出来的父类型. 父类型引用指向了子类对象. 程序中体现: 父类或者接口的引用指向或者接收自己的子类对象. 好处和作用: 多态的存在提高了程序的扩展性和后期可维护性 前提: 需要存在继承或者实现关系 要有覆盖操作 多态的特点 成员函数: 编译时:要查看引用变量所属的类中是否有所…
再谈数组 在这一篇中我们来讲一下关于数组的排序和查找的方法. 排序 说到数组的排序,就不得不说冒泡这种经典的方法. 1.冒泡排序 冒泡排序的基本思想是比较两个相邻元素的值,如果满足条件就交换元素的值(如果是升序,就将较大的值放在索引大的引用内,较小的值放在索引小的引用内:降序的话反之),这样一次循环后最大或最小的值就会转移到数组的最后的位置,经过多次循环后数组就会按要求排好. 具体算法如下(以升序为例):     publicstaticvoid swap(int[] array) { bool…
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类.比如new Animal…
前面我们介绍了HashMap,Hashtable,那么还有一个hash家族,那就是HashSet;在讲解HashSet前,大家先要知道的是HashSet是单值集合的接口,即是Collection下面的,而HashMap是Map下面的,但是它和HashMap又是有关系的,所以在使用的时候大家需求要注意,重点还是要对下面的图需要熟悉,好了,我们开始分析. 一.HashSet 定义 翻看源码,HashSet的定义如下: public class HashSet<E> extends Abstract…
Java中设置session的详细解释 简单通俗的讲session就是象一个临时的容器,用来存放临时的东西.从你登陆开始就保存在session里,当然你可以自己设置它的有效时间和页面,举个简单的例子:我们做一个购书的JSP网站,顾客买书的时候会挑选出一些书,但是在付钱之前还可以修改,所以不能存到数据库.就可以先保存在session里,等到确认了以后再放入数据库... 一.cookie和session机制之间的差别和联系 让我们用几个例子来描述一下cookie和session机制之间的差别和联系.…
上一篇博文<菜鸟学编程(九)——Java反射机制(一)>里面,向大家介绍了什么是Java的反射机制,以及Java的反射机制有什么用.上一篇比较偏重理论,理论的东西给人讲出来总感觉虚无缥缈,还是结合一些实例比较形象具体.那么今天就结合更多的实例具体说说. 实例一:获得完整的类名 package reflection.getclassname; //获得完整的类名 public class GetClassName { public String getNameByClass() { String…
一.定义 泛型是一种未知的数据类型,即当我们不知道该使用哪种数据类型的时候,可以使用泛型. 泛型的本质是为了  参数化 类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型).也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类.接口和方法中,分别被称为泛型类.泛型接口.泛型方法. 在定义类或者方法或者接口的时候,是无法指定需要的参数类型的.这时候,我们需要将参数类型设置为一个参数.这就是所谓的参数化类型. 二.基本使用 1.存在泛型参数的类…
字符串的概述 1.什么是字符串:零个或多个字符组成的有限序列 2.如何使用字符串:(使用字符串分为两步) 1)定义并初始化字符串 2)使用字符,对字符串进行一些处理 // 穿件一个字符串 // 语法 String arhs = “abc”; // 创建一个空的字符串 String string = new String(); // 创建一个字符串对象Demo String string = new String(“Demo”); System.out.println(string); 3.字符串…
本文将详解java中的异常和异常处理机制 异常简介 什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常. Java异常的分类和类结构图 1.Java中的所有不正常类都继承于Throwable类.Throwable主要包括两个大类,一个是Error类,另一个是Exception类: 错误:Error类以及他的子类的实例,代表了JVM本身的错误.包括虚拟机错误和线程死锁,一旦Error出现了,程序就彻底的挂了,被称为程序终结者:例如,JVM 内存溢出.一…
一.字符串类String 1.String是一个类,位于java.lang包中 2.创建一个字符串对象的2种方式: String 变量名=“值”; String 对象名=new String(“值”); 3.字符串的常用方法 3.1 字符串长度——length() 3.2 判断值是否相等 equals() 3.3 判断字符串对象地址是否相同 == 3.4 忽略 大小写 判断 equalsIgnoreCase() 3.5 大小写转换 toLowerCase()——小写 toUpperCase()—…
目录:系统学习 Java IO---- 目录,概览 跟踪行号的缓冲字符输入流 LineNumberReader LineNumberReader 类是一个 BufferedReader ,用于跟踪读取字符的行号.行号从 0 开始.每当 LineNumberReader 在包装的 Reader 返回的字符中遇到行终止符时,行号递增. 可以通过调用 getLineNumber() 方法获取当前行号,也可以通过调用 setLineNumber() 方法设置当前行号. 注意设置的行号不会改变实际的文件指…
学习内容: MyBaits 以前从来没有接触过mybatis,通过今天的学习知道这是一个框架,适用于关注SQL优化和需要频繁更新的项目. 今天做一个关于mybatis项目的入门小程序,效果很不理想. 因为用于maven项目中,遇到两个问题 1.在项目下创建package或class文件时,出现“Source folder is not a Java project.”错误 解决方法:按照网上的解决方法,应该在项目中properties中找project facets,但都找不到是因为根本不在Ja…
由于星期五生病了,所以就没写.今天上课,又来写了!!! 先来说方法的重载. 方法的重载就是有两个方法的方法名相同,但参数不一致,参数个数不一致,或参数的类型不一样. package pkg9;public class Animal{ private String Cat; private String Snake; private String Fish; private String Behavior; public void Cat_F(){ this.Cat="猫"; } pub…
当线程被创建并且被启动之后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,而是具有以下多种状态: 这六种状态之间的转换关系如下: 1.等待唤醒机制 注意: (1)两个线程之间必须用同步代码块给包裹起来,保证等待和唤醒线程同一时间段只能有一个执行,用以保证共享数据安全. (2)同步使用的锁对象必须是同一个对象. (3)必须使用锁对象的wait()和notify()方法完成等待唤醒的操作. (4)要注意多个被synchronized修饰的代码块是只允许在同一时刻运行一个:也就是说如果要和循…
package erase; public class 选人比赛 { public static void main(String[] args) { // TODO Auto-generated method stub char A=0,B=0,C=0,str; for(str = 'X';str<='Z';str++){ if(str!='X'&&str!='Z') { C=str; } } for(str = 'X';str<='Z';str++){ if(str!='X…
Cola公司的雇员分为以下若干类:(知识点:多态) [必做题]• 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份.方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元.• 4.2 SalariedEmployee : ColaEmployee 的子类,拿固定工资的员工.属性:月薪课后作业• 4.3 HourlyEmployee :ColaEmployee 的子类,按小时拿工资的员工,每月…
转载自:http://www.cnblogs.com/pony1223/p/7643842.html Java提高十五:容器元素比较Comparable&Comparator深入分析 JAVA提高十四:HashSet深入分析 JAVA提高十三:Hashtable&Properties深入分析 JAVA提高十二:HashMap深入分析 JAVA提高十一:LinkedList深入分析 JAVA提高十:ArrayList 深入分析 JAVA提高九:集合体系 JAVA提高八:动态代理技术 JAVA…
<code class="language-java">import java.util.Scanner; import java.util.Properties; import java.awt.SystemColor; import java.util.Arrays; import java.util.Random; import java.text.DecimalFormat; import java.math.BigInteger; public class Tsa…
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第九十四章:局部内部类详解 下一章 "全栈2019"Java第九十五章:方法中可以定义静态局部内部类吗? 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习…