自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++程序例:员工分组案例 STL之multimap的小练习

#include<iostream>#include <vector>#include <map>#include <time.h>#define CEHUA 0#define MEISHU 1#define YANFA 2using namespace std;class Worker{public: string m_name; int m_salary;};void createWorker(vector<W

2020-08-03 11:05:27 301

原创 C++程序例:利用仿函数对set中的自定义数据类型指定排序规则

/*内置数据类型会直接排序但是自定义数据类型需要指定排序规则这里以set为例,插入一些Person类的对象然后利用编写的仿函数(本质是类),对元素按Person对象的年龄进行排序*/#include<iostream>#include <set>using namespace std;class Person{public: Person(string name, int age) { this->m_name = name; this-

2020-08-03 09:54:23 595

原创 C++程序例:评委打分 - 关于vector和deque

#include<iostream>#include <vector>#include <deque>#include<algorithm>#include <time.h>using namespace std;class Person//选手类{public: Person(string name, int score) { this->m_Name = name;//姓名 this->m_Score

2020-08-02 10:16:03 390

原创 C++程序例:函数模板 template<class T>

程序例数组排序函数-通用型实现一个对数组排序的函数(从大到小)该函数可以对不同类型的数组元素进行排序(这里使用简单的选择排序)用int型数组、char型数组进行测试#include<iostream>using namespace std;/*数组排序函数-通用型实现一个对数组排序的函数(从大到小)该函数可以对不同类型的数组元素进行排序(这里使用简单的选择排序)用int型数组、char型数组进行测试*///排序算法函数template<class T&

2020-07-29 17:49:07 1158

原创 C++程序例:文本文件的读写、二进制文件读写

文本文件的读写#include<iostream>#include<fstream>#include<string>using namespace std;void test_A()//创建一个.txt文件并写入内容{ //1、包含头文件 #include<fstream> //2、创建流对象 ofstream ofs; //3、指定打开方式 ofs.open("test_A.txt", ios::out); //4、写内容 ofs

2020-07-25 10:36:03 335

原创 C++:简单的通讯录管理系统

程序结构结构体定义功能1:添加联系人(封装的函数)功能2:显示所有联系人(封装的函数)检测是否存在指定联系人(封装的函数)功能3:删除联系人(封装的函数)功能4:查找联系人(封装的函数)功能5:编辑联系人(封装的函数)功能6:清空联系人(封装的函数)显示菜单界面(封装的函数)主函数:显示菜单界面、接收用户指令、调用对应功能函数结构体定义先定义一个通讯录结构体Books,里面存有一个结构体数组PersonArray[MAX]以及通讯录储存的数据条数m_Size。结构体数组PersonArray[MAX]中

2020-07-16 23:04:01 246

原创 程序例:【二叉树】先序遍历、中序遍历、后序遍历

用下面的例子体会三种遍历方式访问的顺序:先序遍历(根结点 > 左子树 > 右子树)的访问结果:++a*bc*+*defg中序遍历(左子树 > 根结点 > 右子树)的访问结果:a+b*c+d*e+f*g后序遍历(左子树 > 右子树 > 根结点)的访问结果:abc*+de*f+g*+程序吃个饭再写:...

2020-07-07 17:53:43 1023

原创 Java基础:斗地主发牌案例Map版(有序版)

public class DouDiZhu2 { public static void main(String[] args) { // Map储存牌的索引和组装好的牌 HashMap<Integer, String> poker = new HashMap<>(); // List储存牌的索引 ArrayList<Integer> pokerIndex = new ArrayList<>

2020-07-04 09:19:52 260

原创 Java基础:Intellij IDEA 2019 版本的 debug 各个调试按钮的功能说明

首先,设置断点。比如在方法第一行或者报错的行右键,选择Debug功能按钮介绍:这8个按钮的快捷键及作用依次为:1、(Alt+F10):如果你的光标在其它行或其它页面,点击这个按可跳转到当前代码执行的行。2、(F8):步过,一行一行地往下走,如果这一行上有方法则不会进入方法。3、(F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法。内,不会进入宫方类库的方法。4、(Alt+Shift+F7):强制步入,能进入任何方法,查看底后源码的时候可以以此进入官方类库的方.

2020-07-03 21:17:38 1289

原创 Java基础:List、Set、Map接口可用静态方法of一次性添加多个元素

是适用于List、Set、Map接口,不适用于接口的实现类;of方法返回值是一个不能改变的集合,不能再add或者put进去东西;Set和Map接口调用of的时候不能有重复元素。public class OfLianXi { public static void main(String[] args) { List<Integer> list = List.of(1, 2, 3, 4); //直接用List接口添加,返回一个List类型 .

2020-07-03 20:24:36 1582

原创 Java基础:Map集合详解

Map集合Collection 和 Map 框架的对比Collection 和 Map 框架的联系Map 的方法总结使用Entry键值对对象遍历MapCollection 和 Map 框架的对比java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.utiljava集合主要可以分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)。

2020-07-03 17:47:52 460

原创 求最大子列和:降低复杂度O(N^3)-O(N^2)-O(NlogN)-O(N)

求最大子列和:尝试降低时间复杂度复杂度T(N)=O(N^3^)T(N)=O(N^2^)T(N)=O(NlogN)T(N)=O(N)T(N)=O(N3)int MaxSubseqSuml( int A[], int N){int ThisSum, MaxSum = 0; int i,j,k; for(=0;i<N;i++){ /* i是子列左端位置 */ for(j=i;j<N;j++){ /* j是子列右端位置 */ ThisSum=0; /* ThisSum是从A[i

2020-07-03 12:24:45 2705

原创 Java基础:Collections是针对Collection集合类的一个工具类

Collection后面加个s是怎么个情况?Collection是集合类的上级接口,继承与他有关的接口主要有List和Set;Collections是针对Collection集合类的一个工具类,不能被实例化,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作。Collections常用方法如下:public static <T> boolean addAll(Collection<T> c, T.....elements):往集合中一次性添加一些元素。pub

2020-07-02 15:15:35 977

原创 Java基础:可变参数,如plus(int... arr)

数据类型确定,参数数量不确定,可使用可变参数(JDK1.5后的新特性):public class VarArgs { public static void main(String[] args) { int i = plus(10, 20, 6); System.out.println("求和结果为:" + i);//求和结果为:36 } public static int plus(int... arr) { //System.o

2020-07-01 18:02:59 498

原创 Java基础:Collection的分支——Set集合及其子类

Collection接口: 单列集合最顶层的接口,单列集合中的共性内容,所有单列集合都可以使用。List接口 / 集合: 有存储顺序,允许存储重复元素。ArrayList类(重点): 底层是数组实现的, 查找快, 增删慢。由于是数组实现,在增和删的时候会牵扯到数组增容,以及拷贝元素,所以慢。而数组是可以直接按索引查找, 所以查找时较快,一个普通的for循环可以遍历。LinkedList类: 底层是链表实现的, 增删快, 查找慢。由于链表实现, 增加时只要让前一个元素记住自己就可以, 删除时让前.

2020-07-01 11:16:39 246

原创 Java基础:Collection的分支——List集合及其子类

前面简单写过Collection层次结构如下:Collection接口: 单列集合最顶层的接口,单列集合中的共性内容,所有单列集合都可以使用。List接口 / 集合: 有存储顺序,允许存储重复元素。ArrayList类(重点): 底层是数组实现的, 查找快, 增删慢。由于是数组实现,在增和删的时候会牵扯到数组增容,以及拷贝元素,所以慢。而数组是可以直接按索引查找, 所以查找时较快,一个普通的for循环可以遍历。LinkedList类: 底层是链表实现的, 增删快, 查找慢。由于链表实现, 增

2020-06-30 09:38:12 433

原创 Java基础:斗地主发牌案例ArrayList版

斗地主发牌案例准备牌ArrayList<String> poker = new ArrayList<>();洗牌 Collections.shuffle(poker);发牌看牌import java.util.ArrayList;import java.util.Collections;public class DouDiZhu { public static void main(String[] args) { // 1、准备牌

2020-06-30 08:36:33 257

原创 Java基础:泛型的使用

泛型的使用定义和使用含有泛型的类定义和使用含有泛型的接口泛型通配符<?>的使用定义和使用含有泛型的类public class FanXing<T> { public void print(T t) { System.out.println(t); }}public class Demo { public static void main(String[] args) { FanXing<String> dx

2020-06-27 21:36:45 199

原创 Java基础:专门处理Collection中的元素的迭代器Iterator、增强for循环

为方便的处理集合Collection中的元素,Java中出现了一个对象叫做 迭代器(Iterator),该对象提供了一些方法专门处理集合中的元素。主要方法(下例中):boolean b = iter.hasNext(); // 判断是否还有下一个元素?String s = iter.next(); // 取出下一个元素import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public

2020-06-26 21:05:46 300

原创 Java基础:Collection集合(Collection层次结构中的根结构)

Collection层次结构Collection接口: 单列集合最顶层的接口,单列集合中的共性内容,所有单列集合都可以使用。List接口 / 集合: 有存储顺序,允许存储重复元素。ArrayList类(重点): 底层是数组实现的, 查找快, 增删慢。由于是数组实现,在增和删的时候会牵扯到数组增容,以及拷贝元素,所以慢。而数组是可以直接按索引查找, 所以查找时较快,一个普通的for循环可以遍历。LinkedList类: 底层是链表实现的, 增删快, 查找慢。由于链表实现, 增加时只要让前一个元

2020-06-25 15:55:33 475

原创 数据结构与时间复杂度

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。逻辑结构就是数据之间的关系。而按数据之间的关系来说,大概可以分为两种:线性结构和非线性结构。线性结构有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继。例如:线性表,典型的线性表有:顺序表、链表、栈(顺序栈、链栈)和队列(顺序队列、链队列)。它们共同的特点就是数据之间的线性关系,除了头结点和尾结点之外,每个结点都有唯一的前驱和唯一的后继,也就是所谓的一对一的关系。非线性结构对应于线性结构,非线性结

2020-06-24 20:51:55 347

原创 Java基础:StringBuilder类

StringBuilder类与String类的区别由于String一旦初始化就不可改变长度,简单的字符串拼接其实是创建了新的String对象,再把拼接后的内容赋值给新的对象。在频繁修改的情况下会频繁创建对象,而StringBuilder从头到尾只有一个实例对象,节省资源,效率提高。那么StringBuilder类如何做到的呢?以下是源码:abstract class AbstractStringBuilder implements Appendable, CharSequence { /**

2020-06-24 18:55:21 237

原创 Java基础:Date类、DateFormat类、Calendar类

Date类、DateFormat类Date类DateFormat类Date类System.out.println(System.currentTimeMillis());//输出:1592919245566//解释:距离197.01.01 00:00:00//这是格林尼治时间,中国加8小时//已过去1592919245566(long型)毫秒Date date1 = new Date();System.out.println(date1);//输出:Tue Jun 23 21:43:07

2020-06-23 23:49:54 207

原创 Java基础:Object类介绍、toString()方法、equals()方法

Object类java.lang.Object中描述的所有方法子类都可以使用,每个类都使用Object类作为超类,所有对象(包括数组)都实现这个类的方法。如果一个类没有指定父类,默认就是继承Object类,即下面两句是一样的:class Person { }class Person extends Object { }...

2020-06-23 16:56:52 483

原创 Java基础:【接口】作为方法的参数、【接口】作为方法的返回值

前面通常是这样定义集合:ArrayList<String> list = new ArrayList<>();按住 Ctrl 鼠标点击ArrayList后跳转发现public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{...},继续按住 Ctrl 鼠标点击List后跳转发现

2020-06-23 11:24:50 1463

原创 Java基础:类作为成员变量、接口作为成员变量

对于常见的成员变量:String str=“哈哈哈”,实际上String就是一个类,只不过是JDK作者写的。同样,我们也可以自定义一个类当作成员变量。比如在游戏中,英雄是一个类,在设定英雄类的成员变量的时候,我们想给英雄配备一把武器。问题是其他英雄也要有武器,而且武器有很多参数,因此我们把武器也创建成一个类,武器类给不同的英雄类当成员变量使用,详见下例:public class Hero { private String name; // 英雄名 private int age;

2020-06-22 20:08:30 2236 1

原创 Java基础:【匿名内部类】是什么?

接口的使用需要一个实现类的对象,有时候只需要使用一次,那么能不能跳过实现类的定义呢?同样的,一个父类的实现有时候也需要靠子类,这个子类的定义可以省略吗?

2020-06-22 17:37:08 390

原创 Java基础:【局部内部类】的定义、访问方式

局部内部类(在方法内部的类)结构public class OuterClass { // 外部类 public void OuterMethod() { // 外部类方法 class InnerClass { // 局部内部类,class前什么都不能写 public void InnerMethod() {...} // 局部内部类的方法 } }}public class OuterClass {

2020-06-22 17:11:25 217

原创 Java基础:变量同名时,内类方法访问外类变量用【外类名称.this.变量名】

如果这三处的变量名不同,则直接输出即可public class OuterClass { int OutNum = 10;// 外部类的成员变量 public class InnerClass { int InnerNum = 20;// 内部类的成员变量 public void InnerMethod() { int InnerLocalNum = 30;// 内部类的方法的局部变量 System.ou

2020-06-22 16:53:27 550

原创 Java基础:【成员内部类】的定义、访问方式

内部类和外部类的书写结构public class OuterClass { // 外部类 public class InnerClass { // 成员内部类 int InnerName; // 内部类成员变量 public void InnerMethod() {...} // 内部类成员方法 } int OuterName; // 外部类成员变量 public void OuterMethod() {...} // 外部类成员方法}

2020-06-22 15:51:36 246

原创 Java基础:四种权限修饰符 public、protected、default、private

四种权限修饰符在访问时的权限区别公共 public受保护 protected默认 default私有 private同一类(我自己)可访问 √可访问 √可访问 √可访问 √同一个包(我老婆)可访问 √可访问 √可访问 √不同包的子类(我儿子)可访问 √可访问 √不同包任何类(陌生人)可访问 √...

2020-06-22 13:14:15 224

原创 Java基础:【final】关键字修饰的东西是最终的、不可改变的

final 代表最终的、不可变的四种常见用法:修饰一个类不能有任何子类(太监类),因此该类的成员方法都不能被覆盖重写。这里可以看出final和abstract是矛盾的,不能同时出现的。一用final修饰,类的香火就断了(不能有儿子了)。修饰一个方法最终方法,该方法不能被覆盖重写。修饰一个局部变量一次赋值,终生不变。对于基本数据类型:终生不变指的是数据不可变,final int num=6;,当然也可以先int num,再赋值为6。但之后不能再对num赋值,哪怕再赋值6也不行,

2020-06-22 11:35:52 522

原创 Java基础:电脑USB接口案例、多态性、向上/下转型

下面为一个电脑类(class)。除了自身开关机,电脑的功能在于使用各种设备。但是作为电脑来说,只需要提供一个标准的USB母口,那么任何USB公口都可以在电脑上使用。于是定义了一个“使用设备”方法,传入参数为usb类型。public class Computer { public void powerOn() { System.out.println("电脑开机"); } public void powerOff() { System.out.pri

2020-06-22 09:59:20 398

原创 Java基础:extends 与 implements 的区别

extends 与 implements 都可以实现代码复用,提高开发效率,下面粗浅地对比一下两者差别:extendsimplementsextends是子类继承父类的关键字implements是实现接口的关键字意义:多个类部分功能相同,则抽象出一个类来存放相同部分提高代码简洁性,其他类要用到这部分功能时可以继承这个类,这个父类最大限度抽取了共性,这个抽象类除了被继承没有任何意义意义:如果多个类处理的目标相同,但方法不同。则定义一个接口,也就是一种协议,目的在建立一种类与类间

2020-06-21 20:09:33 242

原创 Java基础:【接口】小结

接口是多个类的公共规范,是一种引用数据类型。接口的定义:public interface 接口名{…}接口中可以包含的内容,[ ] 中的内容可以省略:成员变量,即常量[public] [static] [final] 数据类型 常量名 = 数据值;接口中常量必须赋值,一旦赋值不可改变,常量名称完全大写,用下划线分隔抽象方法,接口最重要的内容[public] [abstract] 返回值类型 方法名(参数);实现类必须覆盖重写接口所有抽象方法,除非实现类是抽象类默认方法,java8新特性

2020-06-21 11:04:01 180

原创 Java基础:接口的【静态方法】直接通过接口名调用,而不能是实现类的对象

前面提到,类中的静态方法推荐用【类.静态方法】的格式调用接口中也类似:public interface InterfaceStatic { public static void methodStatic() { // public可省略 System.out.println("这是接口中的静态方法"); }}public class InterfaceStaticImpl implements InterfaceStatic { public static

2020-06-21 09:40:54 3501

原创 Java基础:接口的【默认方法】可在新增方法时保护已有实现类

首先,我们有一个接口,接口内有一抽象方法methodAbstract1public interface MyInterface { // 注意用interface而不是class public abstract void methodAbstract1(); // public和abstract可有可无但不能写别的,比如private}该接口有以下MyInterfaceA、B两个实现类已投入使用public class MyInterfaceA implements MyInte

2020-06-20 22:50:02 722

原创 Java基础:发红包(一父类二子类多对象)案例

父类:用户类// 用户类public class User { private String name; private int money; public User() { } public User(String name, int money) { this.name = name; this.money = money; } // 显示当前用户余额 public void show() {

2020-06-20 10:54:36 325

原创 Java基础:【抽象类】的具体使用步骤

》创建一个class前写abstract关键字的抽象类,抽象类不能创建对象,只能创建其非抽象子类的对象。如本例抽象类名为 “形状类型”,我们的最终目的是计算这个形状的面积。注意:含有抽象方法的类必须是抽象类,但抽象类不一定要有抽象方法。》抽象类中可以有抽象方法,抽象方法没有方法体(直接分号结尾没大括号)。如本例中的第一个方法:使用简单公式计算面积,可传入的参数为a。由于不知道具体形状,无法找到简单公式来计算面积,故为抽象方法。》抽象类中也可以有普通成员方法,即不带abstract关键字的方法。如本例中.

2020-06-20 09:15:39 382

原创 Java基础:super、this关键字的小结

【super】关键字用来访问父类内容在子类的成员方法中,访问父类的成员变量;在子类的成员方法中,访问父类的成员方法;在子类的构造方法中,访问父类的构造方法(构造函数中的第一条语句)。【this】关键字用来访问本类内容在本类的成员方法中,访问本类的成员变量;在本类的成员方法中,访问本类的另一个成员方法;在本类的构造方法中,访问本类的另一个构造方法(是构造函数中的第一条语句)。...

2020-06-19 14:02:10 237

空空如也

空空如也

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

TA关注的人

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