源码:

class SequenceList<T>{
    private int size=0;//表大小
    private int max_length;//表长
    private final int default_length = 20;//默认长度
    private Object[] o;
    
    //初始化
    public SequenceList(){
        max_length = default_length;
        
        o = new Object[max_length];
    }
    public SequenceList(int init_length,T data){
        max_length = init_length;
        o=new Object[max_length];
        o[0]=data;
        size++;                
    }
    //返回长度
    public int getLength(){
        return max_length;
    }
    
    //返回指定索引处值
    /**
     * @param location
     * @return
     */
    @SuppressWarnings("unchecked")
    public T getValue(int location){
        return (T) o[location];
    }
    
    //返回指定值的位置
    public int getLocate(T data){
        int tag=size-1;
        while(tag>0){
            if(o[tag].equals(data)){
                break;
            }
            tag--;
        }
        return tag;
        
    }
    
    //插入数据
    public void insert(T data,int location){    
        if(size > max_length-1){
            throw new IndexOutOfBoundsException("超过线性表最大长度");
        }else{
            int flag = size;
            while(flag>location){
                o[flag] = o[flag-1];
                flag--;
            }
            o[flag] = data;
            size++;
        }
        
    }
    
    public void add(T data){
        insert(data, size);
    }
    
    //删除数据
    public T delete(int location){
        @SuppressWarnings("unchecked")
        T old_value = (T) o[location];
        if(location<0 || location > size-1){
            throw new IndexOutOfBoundsException("不再线性表范围");
        }else{
            while(location<size-1){
                o[location] = o[location+1];
                location++;
            }
            o[--size] = null;
            
        }
        return old_value;
    }
    
    //判断是否空表
    public boolean isEmpty(){
        if(size>0)
            return false;
        else
            return true;
    }
    
    //清空表
    public void clear(){
        while(--size>=0){
            o[size] = null;
        }
    }
    @Override
    public String toString() {
        if(size <0 )
            return "[]";
        else{
            StringBuffer sb = new StringBuffer("[");
            int flag = 0;
            while(flag < size){
                sb.append(o[flag].toString()+",");
                flag++;
            }
            return sb.delete(sb.length()-1, sb.length()).toString()+"]";
            }
    }
    @Override
    public boolean equals(Object obj) {
        if(obj == null){
            return false;
        }
        if(obj == this){
            return true;
        }
        if(obj instanceof SequenceList){
            @SuppressWarnings("unchecked")
            SequenceList<T> s = (SequenceList<T>) obj;
            if(s.size == size){
                int flag=0;
                while(o[flag] == s.o[flag]){
                    flag++;
                }
                if(flag == size-1){
                    return true;
                }
            }
        }
        return false;
    }

}

转载于:https://www.cnblogs.com/mapleyuan/archive/2013/04/06/3002458.html

线性表java实现之顺序存储源码相关推荐

  1. java线性表源代码_线性表java实现之顺序存储源码

    源码: class SequenceList{ private int size=0;//表大小 private int max_length;//表长 private final int defau ...

  2. Java HashSet和HashMap源码剖析

    转载自 Java HashSet和HashMap源码剖析 总体介绍 之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说Ha ...

  3. Java智慧校园系统源码,智慧学校源码 +小程序+电子班牌

    Java智慧校园系统源码 智慧学校源码 小程序+电子班牌 有演示,可正常上线运营+可授权 开发环境:Java+springboot+vue+element-ui+mysql 一款集智慧教学.智慧教务. ...

  4. java企业人事管理系统源码_基于Java+SSH的企业人事管理系统

    需求分析 基于Spring, Struts2, Hibernate,Java 实现一个企业人事管理系统, 实现 权限管理.人事管理.考勤管理.数据统计等.主要功能为签到.请假.离岗及数据汇总的功能 本 ...

  5. ssh+mysql实现的Java web论坛系统源码

    今天给大家来演示一下一款有spring+struts2+hibernate+mysql实现的Java web论坛系统源码,本系统功能类似与csdn论坛,用户发帖时可以设置积分,当结帖时可以选择给评论的 ...

  6. 死磕 java集合之ArrayDeque源码分析

    问题 (1)什么是双端队列? (2)ArrayDeque是怎么实现双端队列的? (3)ArrayDeque是线程安全的吗? (4)ArrayDeque是有界的吗? 简介 双端队列是一种特殊的队列,它的 ...

  7. Java Review - LinkedHashMap LinkedHashSet 源码解读

    文章目录 Pre 概述 数据结构 类继承关系 构造函数 方法 get() put() remove() LinkedHashSet 使用案例 - FIFO策略缓存 Pre Java Review - ...

  8. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(一)

    课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...

  9. idea 线程内存_Java线程池系列之-Java线程池底层源码分析系列(二)

    课程简介: 课程目标:通过本课程学习,深入理解Java线程池,提升自身技术能力与价值. 适用人群:具有Java多线程基础的人群,希望深入理解线程池底层原理的人群. 课程概述:多线程的异步执行方式,虽然 ...

最新文章

  1. linux qt 生成word,Qt 生成word、pdf文檔
  2. 一元操作符“++”,“- ” 之强制转换数值
  3. 31行代码AC——PTA 求二叉树的叶子结点个数 (20分)——解题报告
  4. JS 语法糖 0 —— 解构
  5. Beta 冲刺 (6/7)
  6. python文件系统监控_简单了解Python下用于监视文件系统的pyinotify包
  7. SpringSecurity实战(八)-通用第三方登陆-自定义认证配置实现
  8. 基于阿里云盘的文件分享系统
  9. css给div四角添加效果
  10. 201671030116宋菲菲 词频统计软件项目报告
  11. 生活-痘痘告诉你,身体哪里生病了
  12. metamask 最新版官方版
  13. 阿里大促,「技术负责人」如何做技术保障?
  14. GMT所提供的所有命令和其功能
  15. Proximal Algorithms--Moreau-Yosida regularization
  16. mtcnn系列-2.数据集讲解
  17. SpringBoot 日志系列:(二)日志配置
  18. Flex form 提交list数据表单
  19. 饿了么内部员工看“饿了么危矣”
  20. TIM输出比较——PWM

热门文章

  1. filezilla 设置服务器_服务器ftp软件,五款服务器ftp软件的使用方法
  2. html5 websocket与c,打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
  3. struts2登录注册示例_Struts 2动作示例教程
  4. 工作队列 ( workqueue )
  5. Java基础:把对象作为参数
  6. Electron —— Cannot find module ‘index.js’
  7. xxl_job springboot改造
  8. mysql homedir迁移
  9. 《面向模式的软件体系结构1--模式系统》读书笔记(7)--- 通信
  10. JAVA类加载的委托模型