自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 Vue中v-show 和 v-if(考虑性能优化)

Vue中v-show 和 v-if共同点不同点示例代码块共同点都是用来控制显示和隐藏的命令不同点v-show是通过css中的display控制显示和隐藏,当display值为none时,隐藏,只编译一次v-if是动态的,通过向DOM树添加或删除DOM元素控制显示和隐藏,是个不停的销毁和创建的过程,比较消耗性能示例代码块<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"&gt

2020-11-21 12:21:56 2031

原创 JS中的isNaN()方法

isNaN()方法用于判断是否为数字,数字返回F,非数字返回T示例<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <s

2020-11-17 13:06:22 1072

原创 JS的三种写法

JS的三种写法1.行内式的JS直接写到元素内部关键代码块完整代码2.内嵌式的JS关键代码块完整代码3.外部JS写法 双标签关键代码创建js脚本文件html文件代码1.行内式的JS直接写到元素内部关键代码块<body> <input type = "button" value = "清风" onclick = "alert('扶摇')"></body>完整代码<!DOCTYPE html><html lang="ch"><h

2020-11-16 21:28:55 1833

原创 Spring框架概述

1.Spring是轻量级的开源的JavaEE框架2.Spring可以解决企业应用开发的复杂性3.Spring有两个核心部分:IOC和Aop(1)IOC:控制反转,把创建对象过程交给Spring进行管理(2)Aop:面向切面,不修改源代码进行功能加强4.Spring特点(1)方便解耦,简化开发(2)Aop编程支持(3)方便程序测试(4)方便和其他框架进行整合(5)方便进行事务操作(6)降低API开发难度...

2020-11-09 16:46:13 113

原创 表格数据存储_javabean和List存储整张表

Id名字薪水1001阿狸2102361002阿卡丽9932561003瑞雯714226javabean的构建一个完整的javabean要有set,get方法和无参构造器class User{ private int id; private String name; private int salary; public User(){ } public int getId() { return id; } public void se...

2020-11-07 18:10:11 115

原创 表格数据存储_Map和List结合存储表格数据

表格数据存储_Map和List结合存储表格数据ORM思想(对象关系映射)的简单实验每个Map存储一行数据,多行数据有多个Map,将多个Map放入List中public class TestStoreData { public static void main(String[] args) { Map <String,Object> m1 = new HashMap(); m1.put("ID", 1001); m1.put("姓名", "阿狸"); m1.put("薪水"

2020-11-07 16:51:12 310

原创 Collections工具类的使用(不是Collection接口)

Collections工具类常用的方法public class Test { public static void main(String[] args) { List<String> aList = new ArrayList<String>(); for (int i = 0; i < 5; i++){ aList.add("a" + i); } System.out.prin

2020-11-06 19:50:49 117

原创 遍历集合的方法总结

遍历集合的方法总结遍历List方法一:普通for循环遍历遍历List方法二:增强for循环遍历List方法三:使用Iterator迭代器(1)遍历List方法四:使用Iterator迭代器(2)遍历Set方法一:增强for循环遍历Set方法二:使用Iterator迭代器遍历Map方法一:根据key获取value遍历Map方法二:使用entrySet遍历List方法一:普通for循环 for(int i=0;i<list.size();i++){//list为集合的对象名 String temp

2020-11-06 19:28:10 129

原创 使用迭代器Iterator遍历Map_方式2

使用迭代器Iterator遍历Map_方式2 public static void TestItratorMap() { Map<Integer,String> map1 = new HashMap(); map1.put(1001, "希维尔"); map1.put(1002, "安妮"); map1.put(1003, "佐伊"); Set <Entry<Integer,String>> ss=map1.entrySet(); for(Ite

2020-11-06 19:09:02 977

原创 测试迭代器Itertor遍历List,Set,Map

测试迭代器Iterator遍历List,Set,Map迭代器遍历List迭代器遍历Set迭代器遍历Map迭代器遍历List public static void TestIteratorList() { List <String> list = new ArrayList(); list.add("阿狸"); list.add("阿卡丽"); list.add("瑞文"); //使用Iterator遍历List for(Iterator <String>

2020-11-06 11:14:26 160

原创 TreeSet的使用和底层原理

TreeSet的使用和底层原理TreeSet的底层TreeSet和Comparable接口的使用Comparable接口的实现TreeSet的使用使用TreeSet的要点TreeSet的底层TreeSet底层实际是用TreeMap实现的,内部维持了一个简化版的TreeMap,通过key来存储Set的元素。 TreeSet内部需要对存储的元素进行排序,因此,我们对应的类需要实现Comparable接口。这样,才能根据compareTo()方法比较对象之间的大小,才能进行内部排序。TreeSet和Comp

2020-11-05 19:28:22 1939

原创 容器的接口层次结构图

容器的接口层次结构图

2020-11-03 17:16:36 241

原创 Set接口_手工实现HashSet

Set接口Set的使用Set接口继承自Collection,Set接口中没有新增方法,方法和Collection保持完全一致。我们在前面通过List学习的方法,在Set中仍然适用。因此,学习Set的使用将没有任何难度。Set容器的特点Set容器特点:无序、不可重复。无序指Set中的元素没有索引,我们只能遍历查找;不可重复指不允许加入重复的元素。更确切地讲,新元素如果和Set中某个元素通过equals()方法对比为true,则不能加入;甚至,Set中也只能放入一个null元素,不能多个。Set常用的

2020-11-03 17:13:18 76

原创 TreeMap的使用和底层实现

TreeMap的使用和底层实现TreeMap的实现TreeMap是红黑二叉树的典型实现。打开TreeMap的源码,发现里面有一行核心代码:private transient Entry<K,V> root = null;root用来存储整个树的根节点。我们继续跟踪Entry(是TreeMap的内部类)的代码可以看到里面存储了本身数据、左节点、右节点、父节点、以及节点颜色。 TreeMap的put()/remove()方法大量使用了红黑树的理论。TreeMap和HashMap实现了

2020-11-03 16:23:09 213

原创 手写HashMap5_增加泛型

手写HashMap5_增加泛型节点增加泛型public class Node3 <K,V>{ int hash; K key; V value; Node3 next;}主要方法代码块增加泛型public class SxtHashMap5 <K,V>{ Node3[] table;//位桶数组 bucket array int size;//存放键对个数 public SxtHashMap5() { table = new Node3[16];//长

2020-11-03 00:53:17 154

原创 手动实现HashMap4_get查找键值对

手动实现HashMap4_get查找键值对get方法 public Object get(Object key) { Object value = null; int hash = myHash(key.hashCode(),table.length); Node2 temp = table[hash]; while(temp!=null) { if(temp.key.equals(key)) { value = temp.value; break; }els

2020-11-02 23:01:45 146

原创 手动实现HashMap3_实现toString方法,方便查看Map中的键值对信息

手动实现HashMap3_实现toString方法,方便查看Map中的键值对信息toString方法代码块public String toString() { StringBuilder sb = new StringBuilder('['); for(int i=0;i<table.length;i++) { Node2 temp = table[i]; while(temp!=null) { sb.append(temp.key+":"+temp.value+","

2020-11-02 22:35:29 328

原创 手工实现HashMap2_解决键(key)重复问题_链表生成问题

手工实现HashMap2_解决键(key)重复问题_链表生成问题解决键重复问题_链表生成问题方法代码块 public void put(Object key,Object value) { boolean repeat = false; Node2 newNode = new Node2(); newNode.hash = myHash(key.hashCode(),table.length); newNode.key = key; newNode.value = value;

2020-11-02 20:40:17 201

原创 手工实现HashMap1_基本结构_put存储键值对

手工实现HashMap1_基本结构_put存储键值对节点类public class Node2 { int hash; Object key; Object value; Node2 next;}基本结构_put方法public class SxtHashMap1 { Node2[] table;//位桶数组 bucket array int size;//存放键对个数 public SxtHashMap1() { table = new Node2[16];//长度一般为2的

2020-11-02 17:21:12 123

原创 HashMap底层原理2_查找键值的过程_扩容问题

HashMap底层原理_查找键值的过程取数据过程get(key)我们需要通过key对象获得“键值对”对象,进而返回value对象。明白了存储数据过程,取数据就比较简单了,参见以下步骤: (1) 获得key的hashcode,通过hash()散列算法得到hash值,进而定位到数组的位置。 (2) 在链表上挨个比较key对象。 调用equals()方法,将key对象和链表上所有节点的key对象进行比较,直到碰到返回true的节点对象为止。 (3) 返回equals()为true的节点对象的v

2020-11-02 16:03:50 353

原创 HashMap底层原理1_存储键值对底层过程

HashMap底层原理_存储键值对底层过程HashMap的本质HashMap底层实现采用了哈希表,这是一种非常重要的数据结构。对于理解很多其他技术都非常有帮助(比如:redis数据库的核心技术和HashMap一样)数据结构中由数组和链表来实现对数据的存储,他们各有特点。 (1) 数组:占用空间连续。 寻址容易,查询速度快。但是,增加和删除效率非常低。 (2) 链表:占用空间不连续。 寻址困难,查询速度慢。但是,增加和删除效率非常高。哈希表就是了结合数组和链表的优点(即查询快,增删效率也高

2020-11-02 15:44:27 433

原创 HashMap和HashTable

HashMap和HashTableHashMapHashMap采用哈希算法实现,是Map接口最常用的实现类。 由于底层采用了哈希表存储数据,我们要求键不能重复,如果发生重复,新的键值对会替换旧的键值对。 HashMap在查找、删除、修改方面都有非常高的效率。Map接口常用的方法:public class TestMap { public static void main(String[] args) { Map<Integer, String> m1 = new

2020-11-02 15:20:43 104

原创 Map接口_简单应用

Map接口_简单应用public class TestMap2 { public static void main(String[] args) { Employee e1 = new Employee(1001,"阿狸",50000); Employee e2 = new Employee(1002,"阿卡丽",50000); Employee e3= new Employee(1003,"波比",50000); Map <Integer,Employee> map = new

2020-11-02 14:48:50 87

原创 Map接口_特点_实现类_常用方法

Map接口_HashMap常用方法Map类的特点现实生活中,我们经常需要成对存储某些信息,比如一个手机号对应一个微信账户,这就是成对存储的关系。Map就是用来存储“键(key)-值(value)对”的。Map类中存储“键值对”通过“键(key)”来标识,所以键对象不能重复。Map接口的实现类Map接口常用的实现类有:HashMap,TreeMap,HashTable,Properties等Map接口常用的方法代码测试public class TestMap { public static

2020-11-02 13:54:00 407

原创 Vector向量

Vector向量Vector底层是用数组实现的List,与ArrayList不同的是,相关方法都加了同步检查,因此,“线程安全,效率低”如:indexOf方法就增加了synchronize同步标记如何选用Vector,LinkedList,ArrayList1.需要线程安全时——Vector2.不考虑线程安全,查找操作较多时——ArrayList3.不考虑线程安全,增删操作较多时——LinkedList...

2020-11-02 13:18:26 137

原创 手工实现LinkedList5_完善_增加泛型_进行小封装

手工实现LinkedList_完善_增加泛型_进行小封装public class SxtLinkedList05 <E>{ private Node first; private Node last; private int size; public void add(E element) { Node n1 = new Node(element); if(first==null) { first=n1; last=n1; }else { n1.previ

2020-11-01 22:20:17 69

原创 手工实现LinkedList4_在指定位置插入节点

手工实现LinkedList_在指定位置插入节点public class SxtLinkedList04 { private Node first; private Node last; private int size; public void add(Object obj) { Node n1 = new Node(obj); if(first==null) { first=n1; last=n1; }else { n1.previous=last; las

2020-11-01 22:17:57 591

原创 手工实现LinkedList3_remove移除节点_getNode方法

手工实现LinkedList3_remove移除节点_getNode方法public class SxtLinkedList03 { private Node first; private Node last; private int size; public void add(Object obj) { Node n1 = new Node(obj); if(first==null) { first=n1; last=n1; }else { n1.previous=

2020-11-01 22:15:52 135

原创 手工实现LinkedList2_get查询_节点遍历

手工实现LinkedList2_get查询_节点遍历public class SxtLinkedList02 { private Node first; private Node last; private int size; public void add(Object obj) { Node n1 = new Node(obj); if(first==null) { first=n1; last=n1; }else { n1.previous=last; l

2020-11-01 22:13:32 70

原创 手工实现LinkedList_节点概念_add方法

手工实现LinkedList_节点概念_add方法自定义链表public class SxtLinkedList { private Node first; private Node last; private int size; public void add(Object obj) { Node n1 = new Node(obj); if(first==null) { first=n1; last=n1; }else { n1.previous=last;

2020-11-01 22:10:15 96

原创 LinkedList特点

LinkedList特点和底层实现LinkedList的特点和存储结构LinkedList底层用双向链表实现存储特点:增删效率高,查询效率低,线程不安全双向链表也叫双链表,是链表的一种,它的每个数据节点都有两个指针,分别指向前一个节点和后一个节点。LinkedList的存储结构图节点类的内容class Node{ Node previous;//指向前一个节点 Node next;//指向后一个节点 Object element;//本节点所存放数据}...

2020-11-01 22:02:30 2093

原创 手工实现ArrayList4(增加remove移除方法)

手工实现ArrayList4(增加remove移除方法)public class SxtArrayList05<E> { private Object[] elementData; private int size; public static final int DEFAULT_CAPACITY=10; public SxtArrayList05() { elementData = new Object[DEFAULT_CAPACITY]; } public SxtArray

2020-10-31 17:28:08 131

原创 手工实现ArrayList3(增加set,get以及索引越界检查)

手工实现ArrayList3(增加set,get以及索引越界检查)public class SxtArrayList04 <E>{ private Object[] elementData; private int size; public static final int DEFAULT_CAPACITY=10; public SxtArrayList04() { elementData = new Object[DEFAULT_CAPACITY]; } public Sxt

2020-10-31 17:25:44 100

原创 手工实现ArrayList2(增加数组扩容方法)

手工实现ArrayList2(数组扩容)public class SxtArrayList03 <E>{ private Object[] elementData; private int size; public static final int DEFAULT_CAPACITY=10; public SxtArrayList03() { elementData = new Object[DEFAULT_CAPACITY]; } public SxtArrayList03(i

2020-10-31 17:19:50 792

原创 手工实现ArrayList(最简化方式)

手工实现ArrayList(最简化方式,增加泛型)public class SxtArrayList <E>{ private Object[] elementData; private int size; public static final int DEFAULT_CAPACITY=10; public SxtArrayList() { elementData = new Object[DEFAULT_CAPACITY]; } public SxtArrayList(in

2020-10-31 17:17:07 128

原创 List的特点和常用方法

List的特点和常用方法List的特点List的用法List的特点List是有序,可重复的有序: List每个元素都有索引标记,可根据元素的索引标记访问元素.可重复:List允许加入重复的元素.List的用法List接口中定义的方法List接口常用的三个实现类:ArrayList,LinkedList,Vector public static void main(String[] args) { //List接口常用的实现类有ArrayList,LinkedList和Vector

2020-10-28 20:14:01 747

原创 自定义泛型

自定义泛型泛型类的声明泛型类的应用泛型类的声明class Mycollection <T>{//T表示泛型,<>内可以用任意字母表示, Object[] objs=new Object[5]; public void Set(T t,int index) { objs[index]=t; } public T Get(int index) { return (T)objs[index]; } }泛型T像一个占位符一样表示“某个未知的数据类型”,我们在真正

2020-10-25 18:10:15 181 2

原创 自定义异常

手动抛出异常_自定义异常自定义异常类自定义异常类的使用1.当JDK提供的标准异常类无法充分表达我们要求时,可以自定义异常类.2.自定义的异常类需继承Exception或Exception的子类.3.自定义异常类如果继承Exception类,则为受检查异常,需要对其进行处理;若不想处理,可以继承运行时异常RuntimeException类.自定义异常类class IllegalAgeExecption extends RuntimeException{ public IllegalAgeExecp

2020-10-24 20:56:25 140

原创 异常处理方式:捕获异常

异常处理方式之一:捕获异常处理图解代码测试处理图解捕获异常通过三个关键词实现:try-catch-finally代码测试在这里插入代码片

2020-10-24 20:10:19 322

原创 枚举

枚举创建枚举类型枚举的使用创建枚举类型enum wifes{ 阿狸,卡莎,阿卡丽,崔丝塔娜}每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final修饰的。可以直接通过枚举类型名使用它们枚举的使用...

2020-10-24 16:59:03 73

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除