java顺序表增删查改_Java实现顺序表的增删改查
public class MyArrayList {
private int[] array; //代表的是存在数据的数组
//array.length代表的是数组的容量
private int size; //记录顺序表的已有数据个数
//构造方法
public MyArrayList() {
//1.申请空间
array = new int[2];
//2.初始化数据个数
size = 0;
}
//增(重点)
//尾插 平均O(1)
public void pushBack(int element) {
ensureCapacity();//扩容
array[size++] = element;
}
//头插
public void pushFront(int element) {
ensureCapacity();//扩容
for(int i = size;i>=1;i--)
{
array[i]=array[i-1];
}
array[0]=element;
size++;
}
//中间任一节点插入
public void insert(int index, int element){
if(index<0 || index>size)
{
System.err.println("插入失败");
return;
}
ensureCapacity();//扩容
for(int i = size - 1;i>=index;i--)
{
array[i+1]=array[i];
}
array[index]=element;
size++;
}
//删(重点)
//尾删
public void popBack() {
if(size<=0)
{
System.err.println("顺序表为空,无法删除");
return;
}
array[--size]=0;
}
//头删
public void popFront() {
if(size<=0)
{
System.err.println("顺序表为空,无法删除");
return;
}
for(int i=0;i<=size-2;i++)
{
array[i]=array[i+1];
}
array[--size]=0;
}
//中间删
public void earse(int index) {
if(size<=0)
{
System.err.println("顺序表为空,无法删除");
return;
}
if(index<0 || index>=size)
{
System.err.println("删除失败");
return;
}
for(int i=index+1;i<=size-1;i++)
{
array[i-1]=array[i];
}
array[--size]=0;
}
//返回·element在顺序表中的下标,如果出现多次,返回第一个下标
public int indexOf(int element) {
for(int i = 0 ; i{
if(array[i]==element)
{
return i;
}
}
return -1;
}
//拿到下标,返回值
public int get(int index) {
if(index<0||index>=size)
{
System.out.println("无法找到下标");
return -1;
}
return array[index];
}
//修改数值
public void set(int index,int element) {
if(index<0||index>=size)
{
System.out.println("无法找到下标");
return ;
}
array[index]=element;
}
//删除掉某一个元素,如果出现多次,删除第一个出现的
public void remove(int element) {
int index = indexOf(element);
if(index != -1)
{
earse(index);
}
}
public int size() {
return size;
}
public boolean isEmpty() {
return size == 0;
}
//删除所有相同的元素
public void removeAll(int element) {
/*
时间:O(n^2) 空间:O(1)
int index;
while((index=indexOf(element))!=-1)
{
earse(index);
}
时间:O(n) 空间:O(n)
int[] newArray = new int[array.length];
int j = 0;
for(int i = 0;i{
if(array[i]!=element)
{
newArray[j++]=array[i];
}
}
array = newArray;
size = j;
*/
//时间:O(n) 空间:O(1)
int j = 0;
for(int i = 0;i{
if(array[i]!=element)
{
array[j++]=array[i];
}
}
size = j;
}
//打印
public void print() {
System.out.println("打印顺序表:当前容量为:"+array.length);
for(int i = 0;i{
System.out.println(array[i]+" ");
}
System.out.println();
}
//扩容
public void ensureCapacity() {
if(size{
return;
}
int newCapacity = array.length*2;
int[] newArray = new int[newCapacity];
for(int i = 0;i{
newArray[i] = array[i];
}
array = newArray;
}
public static void main(String[] args){
MyArrayList list = new MyArrayList();
list.print();
list.pushBack(1);
list.pushBack(2);
list.pushBack(3);
list.print();//1,2,3
list.pushFront(10);
list.pushFront(20);
list.pushFront(30);
list.print();//30,20,10,1,2,3
list.insert(3,100);
list.print();//30,20,10,100,1,2,3
list.insert(20,200);//报错
list.earse(2);
list.earse(2);
list.print();//30,20,1,2,3
list.popFront();
list.popFront();
list.popFront();
list.print();//2,3
list.popBack();
list.popBack();
list.print();//空
list.popBack();//报错
list.pushBack(1);
list.pushBack(2);
list.pushBack(1);
list.print();//1 2 1
System.out.println(list.indexOf(1));
list.set(1,1);
list.print();// 1 1 1
list.remove(1);
list.print();// 1 1
list.pushBack(1);
list.print();// 1 1 1
list.removeAll(1);
list.print();// 空
}
}
java顺序表增删查改_Java实现顺序表的增删改查相关推荐
- Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作
Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: 由于如果只使用一张表存储所有的数据,就会操作数 ...
- Python语言学习之pandas:DataFrame二维表的简介、常用函数、常用案例(增删改查排序之选择指定列、根据条件选择特定数据、赋值、列名重命名、修改列数据、处理缺失值、列合并、分组之详细攻略
Python语言学习之pandas:DataFrame二维表的简介.常用函数.常用案例(增删改查排序之选择指定列.根据条件选择特定数据.赋值.列名重命名.修改列数据.处理缺失值.列合并.分组之详细攻略 ...
- java list集合增删改_Java中集合类list的增删改查
今天给大家带来的是Java中list类的使用,java.util 包提供了list类来对线性数据操作 List接口是Collection接口的子接口,List有一个重要的实现类--ArrayList类 ...
- java三年工作经验工资_工作三年还是只会增删改查,Java 程序员如何进阶?
大部分的企业级应用从本质上看,都是在做增删查改,但是有些公司的业务复杂而专业,有些公司应用的在线用户很多,你做的增删查改和别人做的增删查改,可能会有极大的区别,举个例子: 你做一个新闻资讯网站,首页上 ...
- java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作
1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...
- mysql php 增删数据,php学习之mysql数据的增删改查
1.插入数据 语句:insert into 表名 [(字段1,字段2,字段3,-.)] values (值1,值2,值3,-); 单行插入数据 省略字段名,这种写法后面的值必须要完整,有多少字段就要插 ...
- java数据库edit_Java数据库连接——JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- android增删功能代码,Android Studio开发实战 之 增删改查
增删改查是一个应用最基础的操作,增删改查的流程走通了,下面的路程也就顺利多了.现在使用Android Studio开发一个简单的应用,该应用就实现了增删改查的操作,看似简单,到底简不简单呢,下面开始操 ...
- 【SpringBoot集成ElasticSearch 02】Java HTTP Rest client for ElasticSearch Jest 客户端集成(配置+增删改查测试源码)【推荐使用】
1.简介 SpringBoot 项目初始化时就有 NoSQL 选项 Spring Data Elasticsearch(Access+Driver) 此时 pom 文件里引入的依赖是 spring-b ...
- java servlet dao_Java+MyEclipse+Tomcat 详解Servlet和DAO数据库增删改查操作(源码)
[实例简介] 该资源主要参考自己的博客http://blog.csdn.net/eastmount/article/details/45936121 讲诉Java+MyEclipse+Tomcat 详 ...
最新文章
- 计算机游戏的产生,孩子容易沉迷计算机游戏,原来是因为过程中产生“心流”经验?...
- 网络嗅探混杂模式与非混杂模式的区别
- 转:WinForm程序中两份mdf文件问题的解决方法
- 精彩回顾 | Apache Flink x Iceberg Meetup · 上海站
- TypeScript class 构造函数和成员的初始化顺序
- JS遍历数组的12种方法
- Kong 开源的的服务网格Kuma爬过了K8S这座大山
- VC++连接wifi功能(有密码)源代码
- [高通SDM450][Android9.0]CTA认证--拆分申请权限分组
- 2021年度排第一名的微信段子,笑晕了,太经典
- linux音频子系统 - pcm设备
- 统计指标 ---离散趋势指标
- win10 的计算机配置要求,win10的最低要求配置是什么_windows10系统最低电脑配置要求多少...
- 王者服务器维护7月九号,6月9日体验服停机更新公告
- Rational Rose 建立图书管理系统模型UML
- 经典论文翻译导读之《A Bloat-Aware Design for Big Data Applications》
- Pygraphviz安装失败应该怎么办?
- js以15分钟为单位分割间隔时间
- python双除号_你见过的最全面的 Python 重点
- 米家骑记电助力折叠自行车,看看里面的电子方案
热门文章
- 谈一下对c语言程序设计,谈《C语言程序设计》课程教学.doc
- adb server version (31) doesn't match this client (40); killing...
- wirkshark过滤规则
- 面向对象设计模式之策略模式
- 在 Windows Azure 上部署预配置 Oracle VM
- easyui layout 收缩的bug
- Linux文件系统性能测试工具fdtree和iozone
- Java学科课程大纲
- C语言课后习题(13)
- PAT乙级(1018 锤子剪刀布)