如何使用Java实现顺序表的操作
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,小编给大家分享一下如何使用Java实现顺序表的操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下静态顺序表:使
千家信息网最后更新 2026年10月31日如何使用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安全错误
数据库的锁怎样保障安全
互联网科技有限公司
互联网科技名片
科技互联网龙头
科技企业和互联网企业
互联网科技卖菜
互联网 科技公司
奇酷互联网络科技
易通互联网络科技有限公司
睿民互联网科技
互联网高科技股票
深圳卡尔迅互联网科技有限公司怎么样
哈尔滨新华互联网科技学院
剑昆互联网络科技有限公司临桂
北京华百购互联网科技有限公司
互联网经济与金融科技
本届互联网博览会上的黑科技
徐州市互联网科技有限公司
宁波跨境商互联网科技有限公司
西安有哪些互联网高科技企业
互联网公司属于科技吗
互联网科技产业
时间互联网络科技
互联网金融 科技创新
重庆科技学院互联网
广西拼得多互联网科技有限公司
港股科技和互联网
江阴互联网智能科技产品进口
互联网金融科技展
南京一网一红互联网科技有限公司
承德科技产业互联网平台