码迷,mamicode.com
首页 > 编程语言 > 详细

[2018/11/14] Java学习

时间:2018-11-15 00:11:39      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:vat   应用   static   元素   双端链表   class   显示   oid   编号   

在网上下载了一个用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();
    }

}

 

[2018/11/14] Java学习

标签:vat   应用   static   元素   双端链表   class   显示   oid   编号   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!