如何使用Java实现顺序表的操作
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,小编给大家分享一下如何使用Java实现顺序表的操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下静态顺序表:使
千家信息网最后更新 2025年11月07日如何使用Java实现顺序表的操作
小编给大家分享一下如何使用Java实现顺序表的操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
具体内容如下
静态顺序表:使用定长数组存储。
动态顺序表:使用动态开辟的数组存储。
接口
package com.github.sqlist;public interface ISequence { // 在 pos 位置插入 val boolean add(int pos, Object data); // 查找关键字 key 找到返回 key 的下表,没有返回 -1 int search(Object key); // 查找是否包含关键字 key 是否在顺序表当中(这个和search有点冲突) boolean contains(Object key); // 得到 pos 位置的值 Object getPos(int pos); // 删除第一次出现的关键字 key Object remove(Object key); // 得到顺序表的长度 int size(); // 打印顺序表 void display(); // 清空顺序表以防内存泄漏 void clear();}实现接口里的每个方法
package com.github.sqlist;import java.util.Arrays;/* * 顺序表 */public class MySequenceImpl implements ISequence { private Object[] elem; // 有效数据个数 private int usedSize; private static final int DEFAULT_SIZE = 10; public SqList() { this.elem = new Object[DEFAULT_SIZE]; this.usedSize = 0; } /** * 判断是否为满 * @return 满了返回true,否则返回false */ private boolean isFull() { return this.elem.length == this.usedSize; } /** * 在 pos 位置插入 val * @param pos * 要插入的位置 * @param data * 要插入的值 * @return * 插入成功返回true,否则返回false */ @Override public boolean add(int pos, Object data) { // 1. 判断pos位置的合法性 if (pos < 0 || pos > this.elem.length) { return false; } // 2. 判断是否满了,如果满了进行扩容 if (isFull()) { this.elem = Arrays.copyOf(this.elem, 2*this.elem.length); } // 3. 把pos位置以及之后的数全部向后挪一个位置 for (int i = this.usedSize-1; i >= pos; i--) { this.elem[i+1] = this.elem[i]; } // 4. 在 pos 位置插入 val this.elem[pos] = data; // 5. 更新长度 this.usedSize++; return true; } /** * 判断是否为空 * @return 表为空返回true,否则返回false */ private boolean isEmpty() { return this.usedSize == 0; } /** * 查找关键字 key 找到返回 key 的下表,没有返回 -1 * @param key 关键字的值 * @return 查找成功返回true,失败返回false */ @Override public int search(Object key) { // 1. 判断是否为空 if (isEmpty()) { return -1; } // 2. 遍历查找 for (int i = 0; i < this.elem.length; i++) { // 注意:判断条件不能写成:this.elem[i] == key if (this.elem[i].equals(key)) { return i; } } return -1; } /** * 查找是否包含关键字 key 是否在顺序表当中(这个和search有点冲突) * @param key 关键字的值 * @return 查找成功返回true,失败返回false */ @Override public boolean contains(Object key) { // 1. 判断是否为空 if (isEmpty()) { return false; } // 2. 遍历查找 for (int i = 0; i < this.elem.length; i++) { // 注意:判断条件不能写成:this.elem[i] == key if (this.elem[i].equals(key)) { return true; } } return false; } /** * 得到 pos 位置的值 * @param pos 得到的值的位置 * @return 成功得到 pos位置的值返回true,否则返回false */ @Override public Object getPos(int pos) { // 1. 判断位置是否合法 if (pos<0 || pos>=this.elem.length) { return null; } // 2. 位置合法 return this.elem[pos]; } /** * 删除第一次出现的关键字 key * @param key 关键字 * @return */ @Override public Object remove(Object key) { // 1. 先查表看有没有这个关键字 // index:关键字下标 int index = search(key); // 2. 若表里没有这个关键字 if (index == -1) { return null; } // 3. 表里有这个关键字 Object data = this.elem[index]; int i; // 删除第一次出现的关键字 key,把key后面的数全部向前挪一个位置 for (i = index; i < this.usedSize; i++) { elem[i] = elem[i+1]; } this.usedSize--; this.elem[i+1] = null; return data; } /** * 得到顺序表的长度 * @return 顺序表的长度 */ @Override public int size() { return this.usedSize; } /** * 打印顺序表 */ @Override public void display() { for (int i = 0; i < this.usedSize; i++) { System.out.print(this.elem[i] + " "); } System.out.println(); } /** * 清空顺序表以防内存泄漏 */ @Override public void clear() { for (int i = 0; i < this.usedSize; i++) { this.elem[i] = null; } }}测试方法的正确性
package com.github.sqlist;public class TestDemo1 { public static void main(String[] args) { MySequenceImpl mySequence = new MySequenceImpl(); for (int i = 0; i < 10; i++) { mySequence.add(i,i); } System.out.println("在最大值10的范围内插入数据:"); mySequence.display(); System.out.println(); for (int i = 10; i < 20; i++) { mySequence.add(i,i); } System.out.println("扩容:"); mySequence.display(); System.out.println(); System.out.println("随机位置插入数据:"); mySequence.add(9,"list"); mySequence.display(); System.out.println(); System.out.println("search查找一个数据:"+mySequence.search("list")); System.out.println("contains查找一个数据:"+mySequence.contains("list")); System.out.println(); System.out.println("查找某一个位置对应的值:"+mySequence.getPos(9)); System.out.println(); System.out.println("删除一个数据:"+mySequence.remove(8)); mySequence.display(); System.out.println(); System.out.println("得到顺序表的长度:"+mySequence.size()); }}测试结果:
以上是"如何使用Java实现顺序表的操作"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
位置
顺序
关键
关键字
数据
长度
成功
合法
内容
第一次
篇文章
内存
动态
接口
数组
方法
条件
表里
冲突
存储
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
浙江综合软件开发生产厂家
邵阳教育网络安全
数据库怎么进入修改页面
软件开发的响应及服务能力
临沂ios软件开发哪家做的好
县公安局有网络安全办公室
科密应用程序和数据库版本不一致
安卓系统软件开发服务平台
管理服务器和视频服务器
看哪些书可以学软件开发
数据库连接池定期验证
数据库中的货币格式怎么改成英币
初中生怎么学习网络技术
湖南软件开发行业协会
数据库专家服务
公民怎样为维护网络安全做贡献
计算机网络技术哪个内容较好
数据库左表右表连接
微信提示已连接服务器不可上网
原神服务器出现未知错误
永安期货 软件开发
哪个大学软件开发专业最好
卫健局网络安全工作开展情况
名师讲堂网络安全
软件开发bug表情包
网络安全方案系统是基础
jw数据库怎么创建
速达3000数据库结构
软件开发公司排行榜前十
陕西明讯网络技术有限公司