[2018/11/14] Java学习

在网上下载了一个用Java实现的数据结构的视频, 看了前三个视频, 感觉收获很大, 今天花了接近三小时在Java的数据结构上.

课程的目录如下:

第01讲:数组
第02讲:简单排序
第03讲:栈和队列
第04讲:链表
第05讲:双端链表和双向链表
第06讲:递归的应用
第07讲:递归的高级应用
第08讲:希尔排序
第09讲:快速排序
第10讲:二叉树的基本概念
第11讲:二叉树的基本操作
第12讲:遍历二叉树
第13讲:删除二叉树节点
第14讲:红黑树
第15讲:哈希表
第16讲:开放地址法
第17讲:链地址法
第18讲:图的基本概念
第19讲:图的搜索
第20讲:图的最小生成树

今天和昨天我看完了前三章的内容, 代码都亲手敲了一遍:

例子配套使用了测试类, 而不是将代码写在一个类里面, 这种写法非常的新颖(我以前的写法太过老土).

细节都是用private保证了类的安全性.

对于变量的使用, 太厉害了.

package ch_01;

public class MyArray {
    private long[] arr;
    private int elements;

    /**
     * 初始化数组
     */
    public MyArray() {
        arr = new long[50];
    }

    /**
     * 重构初始化函数, 自定义函数的长度
     * @param maxsize
     */
    public MyArray(int maxsize) {
        arr = new long[maxsize];
    }

    /**
     * 插入数组的元素
     */
    public void insert(long value) {
        /*由于数组的最末一项的编号是elements-1, 所以可以直接通过elements来表示新加入的元素*/
        arr[elements] = value;
        elements++;  // 注意elements要后移一位, 方便下一次添加元素.
    }

    /**
     * 显示数组的元素
     */
    public void display() {
        System.out.print("[");
        for (int i = 0; i < elements; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println("]");
    }

    /**
     * 按照数组值搜索
     */
    public int search(long value) {
        int i;
        for (i = 0; i < elements; i++) {
            if (value == arr[i]) {
                break;
            }
        }

        if(i == elements) {
            // 如果遍历到最后一个序列, 注意最后一个元素的序列因该是elements-1
            return -1;
        } else {
            return 1;
        }
    }

    /**
     * 按序列获取元素值
     */
    public long get(int index) {
        if (index >= elements || index < 0) {
            throw new ArrayIndexOutOfBoundsException();
        } else {
            return arr[index];
        }
    }

    /**
     * 删除数据
     */
    public void delete(int index) {
        if(index >= elements || index < 0) {
            throw new ArrayIndexOutOfBoundsException();
        } else {
            for(int i = index; i < elements; i++) {
                arr[i] = arr[i + 1];  //写错了, 之前写成了arr[index] = arr[index + 1]
                //抹掉index序列的元素的值, 后面的元素整体向前移动
            }
            elements--;  // 处理后, 要将元素的数量减一
        }
    }
}

测试类:

package ch_01;

public class TestArray {

    /**
     * 测试类
     * @param args
     */

    public static void main(String[] args) {

        MyArray arr = new MyArray();
        arr.insert(10);
        arr.insert(20);
        arr.insert(90);
        arr.display();
        System.out.println(arr.search(20));
        System.out.println(arr.get(2));
        arr.delete(0);
        arr.display();
    }

}

原文地址:https://www.cnblogs.com/huangZ-H/p/9961043.html

时间: 2024-10-11 05:31:06

[2018/11/14] Java学习的相关文章

东软老师上课笔记 2014.11.14 Java学习指南

java: 数据库:Myslq,Oracle,SQL Server,DB2,syBase Oracle相关的书:Oracle学习手册 数据的保存方式:内存(不可恢复 访问速度最快),硬盘/文件(永久保存,不便于共享),网络(共享),数据库(共享 永久保存 访问速度最慢 增删改查) JavaSE:JDK 变量 数据类型(特殊的数据类型:String 自定义类 数组 集合框架(List Set Map) I/O流(读写数据 6种常用的输入输出对象)网络编程(Socket编程 TCP协议)) int

[2018/11/14]关于学习的思考

今天早上的操作系统课, 头盔哥(操作老师, 因为有车但是还是经常的骑电瓶车来给我们上课, 而且头盔看起来极其的结实, 故我个人称他为头盔哥)又开始给我们灌鸡汤了, 不过今天的鸡汤味道好极了. 让我对大学本科的教育有更加深入的理解. 头盔哥说, 他这门课交给我们的知识, 如果我们不从事计算机是不会用到的, 但是, 通过这门课的学习, 对学习的方法的锻炼才是真正的收获. 学习方法才是大学教育最重要. 接着, 头盔哥又教育我们持之以恒的道理, 嗯嗯, 简直是人生导师. 课堂笔记的鸡汤部分, 专业知识的

201521123105 第11周Java学习总结

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问,还有什么办法实现互斥同步访问(请出现相关代码)? 在Java中,提供了两种方式来实现同步互斥访问:synchronized和Lock class Account{ private int balance; private Lock

2018.11.14 Nginx服务器的使用

Nginx简单教程 1.什么是Nginx? Nginx(engine x)是一款轻量级的Web服务器.反向代理服务器及电子邮件(IMAP/POP3)代理服务器 什么是反向代理服务器? 反向代理方式是指以代理服务器来接收Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的返回结果返回给Internet上请求连接的用户端,此时代理服务器对外的表现为一个反向代理服务器 2.安装与使用 2.1安装 nginx官网下载地址:http://nginx.org,发布版本分为

201671010132 2017-2018第11周Java学习总结

try {  in = new Scanner(Paths.get("H:\\data1.txt")); } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace(); }         while (in.hasNext())         {            String word = in.next();            long callTime = Syst

[2018/11/14] Redhat

https://www.linuxprobe.com/ 第一章.第二章感觉对于我来说过于的基础, 我直接看第三章重定向(不过这个我也学过). 3.1 重定向符 输出重定向 使用>来给文件添加内容的时候会清除文件内的原有的内容 使用>>来给文件添加内容的时候会在原有的文件内容的末尾添加内容 当我们想要将错误的信息重定向到文本内时, 不能直接的使用>而是要使用'2>', 例子如下: 输入重定向 使用<来将文本的内容输入给命令执行. wc -l < readme.txt

2018.11.14 Chopin’s

The lineaments of Chopin's肖邦 short, dramatic life are familiar to most classical-music enthusiasts. Born in 1810 in Warsaw to a middle-class family, he was a child prodigy and became a noted pianist and composer of small-scale but exquisite Romantic

Java学习作业(14.4.21)

前三次作业都是基础语法.真的好水啊.从这次开始记录. 1.编写Java程序,把当前目录下扩展名为txt的文件的扩展名全部更名为back. 1 import java.io.*; 2 import java.lang.*; 3 4 5 public class Home { 6 7 public void reName(String path, String from, String to) { 8 File f = new File(path); //声明File对象,用于导入修改路径 9 Fi

20172319 2018.04.11 《Java程序设计教程》第7周课堂测验(补写博客)

20172319 2018.04.11 <Java程序设计教程>第7周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王志强 日期:2018.04.11 必修/选修:必修 目录 测试内容 测试要求 实验步骤 前期准备 需求分析 代码实现及解释 程序运行结果及代码截图 测试过程及遇到的问题 参考资料 测试内容 完成编程项目PP7.4:具体参考<java程序设计教程>(第八版) Compareble接口的实现 测试要求