数据结构
AlbenXie
这个作者很懒,什么都没留下…
展开
-
快速入门数据结构和算法
简介:有哪些常见的数据结构?基本操作是什么?常见的排序算法是如何实现的?各有什么优缺点?本文简要分享算法基础、常见的数据结构以及排序算法,给同学们带来一堂数据结构和算法的基础课。一 前言1 为什么要学习算法和数据结构?解决特定问题。 深度优化程序性能的基础。 学习一种思想:如何把现实问题转化为计算机语言表示。2 业务开发要掌握到程度?了解常见数据结构和算法,沟通没有障碍。 活学活用:遇到问题时知道要用什么数据结构和算法去优化。二 数据结构基础1 什么是数据结构?数据结..转载 2020-11-09 15:21:26 · 544 阅读 · 0 评论 -
Java内部类序列化问题
一个类能够序列化,需要满足两个条件:类本身实现序列化接口Serializable 类所有的成员属性实现序列化接口SerializableJava的嵌套类(nested class)一共有四种:static nested class 静态嵌套类 inner class 内部类(非静态) local class 本地类(定义在方法内部) anonymous class 匿名类静态嵌套类的行为更接近普通的类,另外三个是真正的内部类。区别在于作用域的不同。 以下是对他们的性质描述:...转载 2020-10-27 20:04:09 · 2165 阅读 · 0 评论 -
Java HashMap 初始化赋值 (不建议)
1、HashMap 初始化的文艺写法HashMap 是一种常用的数据结构,一般用来做数据字典或者 Hash 查找的容器。普通青年一般会这么初始化:HashMap<String, String> map = new HashMap<String, String>();map.put("name", "test"); map.put("age", "20");看完这段代码,很多人都会觉得这么写太啰嗦了,文艺青年一般这么来了:HashMap<String, .转载 2020-10-27 19:45:12 · 12341 阅读 · 0 评论 -
java中Map遍历的四种方式
在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方式去遍历。方法一:在for循环中使用entries实现Map的遍历最常见也是大多数情况下用的最多的,一般在键值对都需要使用Map <String,String>map = new HashMap<String,String>();map.put("熊大", "棕色");map.put("熊二", "黄转载 2020-10-26 09:48:02 · 1625 阅读 · 0 评论 -
两个list集合的交,并,差集
import java.util.ArrayList;import java.util.List;public class Listbj { public static void main(String[] args) { //先声明8个数组 List a = new ArrayList(); List b = new ArrayList(); List c = new ArrayList(); List d =.转载 2020-10-23 14:56:08 · 705 阅读 · 0 评论 -
HashMap和LinkedHashMap的区别
java为数据结构中的映射定义了一个接口java.util.Map; 它有四个实现类,分别是:HashMap Hashtable LinkedHashMap TreeMapMap主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 N转载 2020-10-23 11:30:10 · 5173 阅读 · 0 评论 -
java 读取本地json文件
pom依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version></dependency>读取JSON工具类/*** 读取json文件,返回json串* @param fileName* @return*/public ..转载 2020-09-23 17:19:37 · 3530 阅读 · 0 评论 -
java实现本地json文件的读取和解析
依赖:<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version></dependency><dependency> <groupId>com.alibaba</groupId> <artifactId原创 2020-09-23 16:55:10 · 1534 阅读 · 0 评论 -
使用Navicat premium 12画ER图的几种操作方法
最近接触的关系数据库类型比较多,所以用上了 Navicat Premium。这个工具真的很强大,可以连接大多数关系数据库。再也不用来回切换数据库连接工具了。同时这个工具可以直接直观的查看几个表的ER图,即关联关系,便于设计模型。言归正传介绍方法。实验工具为 Navicat ,具体操作如下:第一种:1 模型–> 新建模型2 选择相应的数据库名称和数据库版本,点击确定 如下:3 点击工具–>从数据库导入,选择你需要建立关系的数据表,点击开始4 生成ER图,如下:第二种:1 选择目转载 2020-09-14 15:42:25 · 5157 阅读 · 0 评论 -
Java集合类的数据结构(二)
1:集合 Collection(单列集合) List(有序,可重复) ArrayList 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector 底层数据结构是数组,查询快,增删慢 线...转载 2020-03-24 14:54:02 · 295 阅读 · 0 评论 -
Java集合类的数据结构(一)
本文源自参考《Think in Java》,多篇博文以及阅读源码的总结前言Java的集合其实就是各种基本的数据结构(栈,队列,hash表等),基于业务需求进而演变出的Java特有的数据结构(因为不仅仅是基本数据结构)。现在,我们以数据结构的视角来看看Java的集合到底是什么样子。并分析他们的性能。一 JAVA集合体系JAVA的集合体系分为两类,Collection接口和Map接口...转载 2020-03-24 14:51:05 · 557 阅读 · 0 评论 -
MultiKeyedMap方案的实现
方案背景所谓“MultiKeyedMap”是指允许多个关键字经过组合映射到一个对象的集合类。比方说,我们有一个数据表,大概的结构如下:ID 姓 名 性别 出生日期 1 王 小毛 男 '1973-05-18' 2 沈 佩佩 女 '1976-06-24' 数据结构大体如下:class Person...转载 2020-03-24 14:46:22 · 607 阅读 · 0 评论 -
算法分析的正确姿势解读
在进一步学习数据结构与算法前,我们应该先掌握算法分析的一般方法。算法分析主要包括对算法的时空复杂度进行分析,但有些时候我们更关心算法的实际运行性 能如何,此外,算法可视化是一项帮助我们理解算法实际执行过程的实用技能,在分析一些比较抽象的算法时,这项技能尤为实用。在在本篇博文中,我们首先会介 绍如何通过设计实验来量化算法的实际运行性能,然后会介绍算法的时间复杂度的分析方法,我们还会介绍能够非常便捷的...原创 2019-12-18 20:35:07 · 468 阅读 · 0 评论 -
数组:为什么很多编程语言中数组都从0开始编号?
为什么数组要从0开始编号(索引),而不是从1开始(⊙o⊙)? 从1开始不是更符合人类的思维习惯?如何实现随机访问?关于数组的定义:数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。对于数组定义的几个关键字,来了解一下数组的概念第一:线性表(Linear List)。就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前后两个方向。其实...转载 2019-11-26 23:39:02 · 463 阅读 · 0 评论 -
java通过双向链表实现ArrayList
主要通过双向链表实现ArrayList首先是封装了链表的节点:public class Node { private Node previous; private Object object; private Node next; public Node(Object object) { this.object = object; ...转载 2019-08-30 16:16:09 · 457 阅读 · 0 评论 -
java实现链表(模拟LinkedList)
众所周知,链表是由一个个节点连接在一起,这里我们就先创建一个节点类,为了达到模拟效果,我们选择建一个Node的静态内部类。我们要想模拟LinkedList,就得先了解LinkedList的类包含的方法:add(Object)dd(int,Object)addFirstaddLastget(int index)removegetIndexrem...转载 2019-08-30 16:16:48 · 395 阅读 · 0 评论 -
数据结构——单链表的Java实现
以前我只是单纯用数组,数组它有固定的长度,是有缺点的,不能随意改变它的长度,而链表可以插入和删除大量元素。接下来我来介绍下单链表什么是单链表呢链表的每个结点中只包含一个指针域,叫做单链表(即构成链表的每个结点只有一个指向直接后继结点的指针,且尾节点的指针为null)。结点结构如下:接下来呢,我举一个简单的存储整数的单链表的列子一.存储整数的单链表分为三部分1.结点...转载 2019-08-30 16:17:55 · 398 阅读 · 0 评论 -
数据结构---表达式求值
一.实验目的 通过一个具体实际应用例子,加深对数据结构课程的理解,能够综合利用数据结构以及C语言的知识设计程序,应用到实际问题中去。二.实验题目常见的小型计算器可以通过输入一个由操作数和操作符组成的表达式计算出结构,设计一个程序模拟上述功能。本实验要求至少建立两个栈和一个运算符优先级比较表,按照运算法优先级的不同操作两个栈,最终实现整个表达式的求值。本程序可以移植到任何转载 2017-05-27 17:50:52 · 2181 阅读 · 0 评论 -
数据结构----二叉树的遍历
一.实验要求 二叉树的遍历操作是树形结构其他众多操作的基础。本实验旨在使学生进一步加深对二叉树的先序、中序和后序等三种遍历次序特点的理解,熟悉二叉链表存储结构,熟练掌握二叉树上的递归算法的设计技术。二.实验题目 构造一棵二叉树,使用二叉链表方式存储,试设计程序,按照先序、中序、后序三种方式将这棵二叉树遍历出来,要求使用递归和非递归两种实现方式。转载 2017-05-27 17:51:55 · 521 阅读 · 0 评论 -
数据结构----栈和队列的综合应用
一.实验目的熟悉掌握数据结构中队列的基本操作,能够结合栈与队列的结构灵活解决一些实际中问题。二.实验题目在许多语言现象中,常见到一种形如abcba的文字,这种文字从左到右读和从右到左读结果是一样的,这种文字就是常说的回文。设计一个程序可以判断给定的一个文字是否是回文。考虑到栈的先进后出以及队列的后进先出,可以结合这两种结构来实现需要的功能,即将文字分别入队和入栈,然转载 2017-05-27 17:52:23 · 693 阅读 · 0 评论 -
数据结构----线性表的应用
一.实验目的 熟悉线性表的链式存储结构,熟练掌握线性表各种基本操作的实现,培养灵活运用线性表解决实际问题的能力。二.实验题目键盘输入一组元素,建立一个带头结点的单向链表(无序),遍历单向链表,在单向链表中删除元素E,然后将单向链表逆置,设计一个MAIN()函数,分别调试上述算法。对于单向链表的建立可以有两种方式选择,一种是从头结点后面依次插入,一种是从尾结点后转载 2017-05-27 17:55:45 · 897 阅读 · 0 评论 -
集合之equals与hashCode方法
集合之equals与hashCode方法 一 equalsequals方法是Object级的,默认对比两个对象的内存地址,很多类都重写了该方法,对比对象的实际内容,一般对比同一类对象相同属性的属性值是否相同。二 hashCode1.哈希表哈希表是一个数组,数组中的每一个元素都是一个单向链表,同一单向链表中的节点具有相同的属性,属性值是数组的下标,这个相同的原创 2017-06-29 10:24:32 · 497 阅读 · 0 评论 -
数据结构
数据结构 一 概述1.什么是数据结构?数据结构是数据在内存中的存储结构,包含可接收类型、空间大小、数据提取方式、数据销毁方式、数据共享等方面。 二 JVM内存:1.栈:数据类型:基本类型变量与对象的引用变量,局部变量与方法的参数也在栈中分配空间。栈中的每一个元素都叫做帧,元素进栈叫做压栈,元素出栈叫做弹栈。共享规则:栈内部的数据在内部共享,不同栈原创 2017-06-29 10:25:01 · 485 阅读 · 0 评论 -
Java创建树形结构算法实例
在JavaWeb的相关开发中经常会涉及到多级菜单的展示,为了方便菜单的管理需要使用数据库进行支持,本例采用相关算法讲数据库中的条形记录进行相关组装和排序讲菜单组装成树形结构。首先是需要的JavaBean 1 2 3 import java.io.Serializable; 4 import java.util.ArrayList; 5 import java原创 2017-09-04 09:12:26 · 1299 阅读 · 0 评论 -
【数据结构】ArrayList原理及实现
一、ArrayList介绍ArrayList是一种线性数据结构,它的底层是用数组实现的,相当于动态数组。与Java中的数组相比,它的容量能动态增长。类似于C语言中的动态申请内存,动态增长内存。 当创建一个数组的时候,就必须确定它的大小,系统会在内存中开辟一块连续的空间,用来保存数组,因此数组容量固定且无法动态改变。ArrayList在保留数组可以快速查找的优势的基础上,弥补了数组在创建后,要...转载 2018-08-08 21:55:00 · 685 阅读 · 0 评论 -
Java 的 ArrayList 的底层数据结构
1. 数据结构--ArrayList源码摘要ublic class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private static final long se...原创 2018-08-08 22:13:45 · 2068 阅读 · 0 评论 -
手写一个Map-1
在爱酷学习网上学习Java视频,其中有一个自己实现map的功能,这里记录一下如何实现package com.jbx.hash;/*** 自定义实现Map的功能 不完美的原因是for循环影响效率* @author Administrator*Map:存放键值对,根据键对象找对应的值对象,键不能重复*/public class SxtMap001 { SxtEntr...转载 2019-08-29 16:42:50 · 429 阅读 · 0 评论 -
手写一个Map-2
package cn.t2;import java.util.LinkedList;public class MyHashMap { private LinkedList[] arr; public MyHashMap(int n) { arr = new LinkedList[n]; } public void put(Obj...转载 2019-08-29 16:47:32 · 295 阅读 · 0 评论 -
手写一个Map-3
一、实现代码:public class CustomHashMap<K, V> { private class Entry<K, V> { int hash; K key; V value; Entry<K, V> next; Entry(int hash, K key, V value, Entry<K, V> ...转载 2019-08-30 16:19:20 · 378 阅读 · 0 评论 -
手写一个Map-4
一、代码实现MyMap接口MyHashMap实现类MyHashMapTest测试类1)MyMap接口package com.cxx.map.HashMap;/*** @Author: cxx* 自己实现 map接口* @Date: 2018/6/8 11:18*/public interface MyMap<K,V> { //大小 ...转载 2019-08-30 16:18:45 · 393 阅读 · 0 评论 -
数据结构----各种排序算法的比较
一.实验目的 实现常用的排序算法,加深对这些算法的理解,以后可以将这些算法应用到实际问题的解决上。 二.实验题目排序是在实际问题中经常用到的算法,快速、选择和插入三种排序算法是排序算法中最简单的也是最常用到的,实现这三种算法,在不同的数值序列上运行,然后比较三种方法的空间复杂度和时间复杂度,分析比较结果,得出选择这三种排序算法的一般原则。转载 2017-05-27 17:48:56 · 758 阅读 · 0 评论