Java里面对int[]数组做新增删除去重实现

news2025/4/8 0:02:15

Java里面对int[]数组做新增删除去重实现

  • 说明
  • 代码
    • 根据索引删除数组中的某个数据实现
    • 在数组中添加一个元素实现
    • 删除数组里面的重复数据
    • 去掉数组里面的重复数据,只保留一个

说明

这里记录下使用int[]数组对数组进行新增删除去重等操作,用来更加了解java里面的集合类思想。如ArrayList、Set等集合。

代码

根据索引删除数组中的某个数据实现

package com.example.test;

import java.util.Arrays;


public class TestMain {

    public static void main(String[] args) {
        deleteList();
    }

    //根据索引删除数组中的某个数据实现
    public static void deleteList(){
        //删除数组原理,从索引位置开始将后面的元素向前移到一位,这就导致最后一位元素会出现2次,所以要新建一个数组,长度比原数组少一,然后将原数组的数据从索引0开始,到length-1复制到新数组里面实现元素删除
        int[] nums={34,35,36,37,38,39};
        //删除索引为2的元素,定义一个元素索引为2的下标
        int index=2;
        for(int i=index;i<nums.length-1;i++){
            //将后一个元素值赋值给前面一个元素
            nums[i]=nums[i+1];
        }
        System.out.println("数据删除后原数组数据:"+Arrays.toString(nums));
        //定义一个新数组,数组长度为nums1.length-1
        int[] newArray=new int[nums.length-1];
        //将原数组数据复制到新数组里面,最后面一位数据不要,从而实现元素的删除功能
        for(int i=0;i<newArray.length;i++){
            newArray[i]=nums[i];
        }
        System.out.println("新数组数据:"+Arrays.toString(newArray));
    }
}

执行结果如下:
在这里插入图片描述

在数组中添加一个元素实现

package com.example.test;

import java.util.Arrays;


public class TestMain {

    public static void main(String[] args) {
        addList();
    }

    //在数组中添加一个元素实现
    public static void addList(){
        //添加数组原理,先新建一个数组,这个数组长度为原数组的长度+1,将原数组数据复制到新数组里面,在新数组里面最后面直接添加元素
        int[] nums={34,35,36,37,38,39};
        //添加元素值,将40添加到数组里面
        int num=40;
        //定义一个新数组,数组长度为nums1.length+1
        int[] newArray=new int[nums.length+1];
        //将原数组数据复制到新数组里面
        for(int i=0;i<nums.length;i++){
            newArray[i]=nums[i];
        }
        //直接将新元素添加到最后段
        newArray[newArray.length-1]=num;
        System.out.println("新数组数据:"+Arrays.toString(newArray));
    }
}

执行结果如下:
在这里插入图片描述

删除数组里面的重复数据

package com.example.test;

import java.util.Arrays;


public class TestMain {

    public static void main(String[] args) {
        deleteRepeatList();
    }

    //删除数组里面的重复数据
    public static void deleteRepeatList(){
        int[] nums={34,35,36,36,37,38,39,34,36,39};
        //新建一个数组用来放未重复的元素,因为不知道重复的元素个数,所以数组长度与原数组长度一致
        int[] newArray=new int[nums.length];
        int index=0;
        for(int i=0;i<nums.length;i++){
            for(int j=0;j<nums.length;j++){
                //元素的索引下标不能相等,同一个元素判断没有意义
                if(i!=j){
                    //如果后一个元素与前面的元素相等,直接结束循环
                    if(nums[i]==nums[j]){
                        //System.out.println("nums[i]="+nums[i]+",nums[j]="+nums[j]);
                        break;
                    }
                }
                //遍历结束,且没有重复元素,将这个元素放到新数组里面
                if (j==newArray.length-1){
                    newArray[index]=nums[i];
                    index++;
                }
            }
        }
        System.out.println("移除重复元素后的数组值="+Arrays.toString(newArray));
        System.out.println("index="+index);
        //定义一个准确长度的数组,用来存放未重复的数组,长度为index
        int[] newArr=new int[index];
        for(int i=0;i<newArr.length;i++){
            newArr[i]=newArray[i];
        }
        System.out.println("移除数据0后的数组值="+Arrays.toString(newArr));
    }
}

执行结果:
在这里插入图片描述

去掉数组里面的重复数据,只保留一个

package com.example.test;

import java.util.Arrays;


public class TestMain {

    public static void main(String[] args) {
        distinctList();
    }

    //去掉数组里面的重复数据,只保留一个,顺序不能保证,时间复杂度为O(n^2)
    public static void distinctList(){
        int[] nums={34,35,36,36,37,38,39,34,36,39};
        //声明一个变量存原数组长度
        int len=nums.length;
        for(int i=0;i<len;i++){
            //从i的下一个元素开始遍历
            for(int j=i+1;j<len;j++){
                //如果后一个元素与前面的元素相等
                if(nums[i]==nums[j]){
                    //那么就将数组的最后一个元素值赋值给当前重复的元素
                    nums[j]=nums[len-1];
                    //将数组长度减一,因为最后一个元素已经赋值给了当前重复的元素值,所以最后一个元素没有存在的必要了
                    len--;
                    //j自减一,让for循环加一后再从j当前重复的元素位置开始遍历
                    j--;
                }
            }
        }
        //声明一个新数组用来存放不重复的元素
        int[] newArr = new int[len];
        for (int i = 0; i < len; i++) {
            newArr[i] = nums[i];
        }
        System.out.println("去重后的数组值="+Arrays.toString(newArr));
    }
}

执行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/951084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

部署单点elasticsearch

部署elasticsearch 创建网络 因为我们还需要部署kibana容器&#xff0c;因此需要让es和kibana容器互联。这里先创建一个网络 docker network create es-net 拉取镜像 我们采用elasticsearch的7.12.1版本的镜像 docker pull elasticsearch:7.12.1 运行 运行docker命令&a…

编译KArchive在windows10下

使用QT6和VS2019编译KArchive的简要步骤&#xff1a; 安装 Qt &#xff0c;我是用源码自己编译的 "F:\qtbuild"安装CMakefile并配置环境变量安装Git下载ECM源码 https://github.com/KDE/extra-cmake-modules.git-------------------------------------------------…

springboot docker

在Spring Boot中使用Docker可以帮助你将应用程序与其依赖的容器化&#xff0c;并简化部署和管理过程。 当你在Spring Boot中使用Docker时&#xff0c;你的代码不需要特殊的更改。你可以按照通常的方式编写Spring Boot应用程序。 java示例代码&#xff0c;展示了如何编写一个基…

如何飞速成为开源贡献者(Contributor)

如何飞速成为开源贡献者Contributor 一、环境信息1.1 硬件信息1.2 软件信息 二、Git安装2.1 Git介绍2.2 Git下载安装 三、开源项目选定四、GitHub参与开源流程4.1 Fork项目4.2 SSH配置4.2.1 为什么要配置SSH4.2.2 如何配置SSH 4.3 Clone项目4.4 IDEA关联4.5 PR生成4.6 PR提交 一…

电脑突然提示msvcr120.dll错误的解决方法,最全面的解决方法

今天&#xff0c;我将和大家分享一种常见的电脑问题——电脑突然提示msvcr120.dll错误的解决方法。希望通过这次演讲&#xff0c;能够帮助大家解决这个问题&#xff0c;提高大家的电脑使用效率。首先&#xff0c;让我们来了解一下msvcr120.dll是什么。msvcr120.dll是Microsoft …

CMH检验

前言 CMH检验&#xff08;Cochran-Mantel-Haenszel Test&#xff09;&#xff0c;分层卡方检验&#xff0c;考虑中心效应&#xff0c;分析干预对结果的影响。如果存在中心效应&#xff0c;即干预结果与中心相关&#xff0c;那么简单的将中心数据合并做卡方分析并不合理。需要采…

记事本编辑代码出错?编程初学者为什么不要用系统文本编辑器? 文本编辑器踩坑指南,代码格式化无效,写代码必看

题目: 写一段判断 2 到 10 之间的质数的输出 环境 左: VScode 右: Windows 文本编辑器(记事本) 目录 代码展示 原视频介绍 图文介绍 更离谱的是使用vscode 一键格式化 摆烂??? 最终手动缩进才解决问题 解决问题 那么问题究竟出在哪里? 文本比较即可 还是不够直…

“媒体+”时代正当时,ATEN以前瞻解决方案助推媒体融合纵深发展

自媒体融合概念提出以来,传统媒体与新媒体融合速度加快,两者的相互结合与优势互补为广电行业发展提供了新的契机,更加多元化、个性化、强互动的“媒体”传播格局已逐渐形成。 “媒体”理念的创建,对于广电行业而言无疑是一种积极的改革创新之举,然而“媒体”的发展也呈现出泛媒…

Redis与Mysql区别

一、关系型数据库 mysql&#xff0c;pgsql,oracle ,sqlserver 支持连表关联查询&#xff08;会有一些特定的语法特特性&#xff09; 二、非关系型数据库 redis,mongodb,memcache &#xff08;key-value&#xff09; 三、关系型数据库与非关系型数据库的区别&#xff1a; 1&am…

idea 显示内存占用,分配内存实时内存

1、打开项目 2、双击“shift” 3、输入show memory indicator 4、打开开关&#xff0c;搞定&#xff01; 5、效果

【git】Idea撤回本地分支、或远程分支提交记录的各种实际场景操作步骤

文章目录 idea撤回本地分支、远程分支场景操作集合场景1&#xff1a;要撤回最后一次本地分支的提交实现效果&#xff1a;操作步骤&#xff1a; 场景2&#xff1a;要撤回最后一次远程分支的提交有撤销记录的&#xff1a;实现效果&#xff1a;操作步骤&#xff1a; 无撤销记录的&…

MySQL内容及原理记录

原理篇 架构、索引、事务、锁、日志、性能调优 高可用 读写分离、分库分表、分布式ID、高可用、分布式数据库、分布式事务、分布式锁 架构 1 执行一条 SQL 查询语句&#xff0c;期间发生了什么&#xff1f; &#xff08;1&#xff09;连接器&#xff1a;客户端通过连接器…

Java five 分析String、Character、Scanner、Number 和 Math 类使用方法

目录 Java String 类使用方法1. 连接字符串2. String 方法3. Java StringBuffer 和 StringBuilder 类 Java Character 类Character 方法使用 Java Scanner 类Java Number & Math 类1. Number 类2. Math 类3. Number & Math 类方法 Java String 类使用方法 String 类是不…

idea配置默认javadoc类、接口注释,自动生成文档

idea配置 类 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} ! "")package ${PACKAGE_NAME};#end #parse("File Header.java") /*** 总体描述* <p>创建时间&#xff1a;${DATE} ${TIME}</p>* author zhaoXin* since v1.0*/ public class $…

【软考】系统集成项目管理工程师(三)信息系统集成专业技术知识①【16分】

一、系统集成的特点 官方解释&#xff1a; 1、信息系统建设的内容主要包括设备采购、系统集成、软件开发和运维服务等&#xff1b; 2、信息系统集成是指将计算机软件、硬件、网络通信、信息安全等技术和产品集成为能够满足用户特定需求的信息系统&#xff1b;显著特点如下&am…

C++有向、无向完全图的边数

一、无向完全图 一个拥有n个结点的无向完全图的边数为&#xff1a; 公式&#xff1a; 简写&#xff1a; &#xff08;表示个顶点中有条边&#xff09; 具体的解释&#xff1a; 比如我们有一个拥有个结点的无向完全图 我们首尾依次连接&#xff0c;共有条边。 然后我们选择…

51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 电位器AD实验

一、直接上代码 /************************************************************************************** * 电位器AD实验 * 实现现象&#xff1a;下载程序后数码管后4位显示电位器检测的AD值&#xff0c;范围是0-4095&#xff0c;一般达不到最…

【linux命令讲解大全】001. bzcat和cat命令的使用指南及示例

文章目录 bzcat解压缩指定的.bz2文件补充说明语法参数实例 cat概要主要用途参数选项返回值例子从零学python bzcat 解压缩指定的.bz2文件 补充说明 bzcat命令解压缩指定的.bz2文件&#xff0c;并显示解压缩后的文件内容。保留原压缩文件&#xff0c;并且不生成解压缩后的文件…

Tutorial: Mathmatical Derivation of Backpropagation

目录 1. 概要 2. Gradient Descent 3. Chain rule 3.1 单变量基本链式法则 3.2 单变量全微分链式法则 3.3 小贴士&#xff1a;微分、导数、导函数是什么关系&#xff1f; 4. What and why backpropagation? 5. Backpropagation for a simple neural network 5.1 基于…

一篇掌握高级交换技术原理与配置(二):mux-vlan

一、概述 MUX VLAN&#xff08;Multiplex VLAN&#xff09;提供了一种通过VLAN进行网络资源控制的机制。通过MUX VLAN提供的二层流量隔离的机制可以实现企业内部员工之间互相交流&#xff0c;而企业客户之间是隔离的。 MUX VLAN分为Principal VLAN&#xff08;主VLAN&#xf…