精华内容
下载资源
问答
  • java数组删除元素或一个数组元素

    千次阅读 2020-03-13 17:55:47
    java数组删除元素或一个数组元素删除数组中单个元素删除数组多个元素(数组表示) 这里直接介绍两种情况: 1、删除数组中单个元素 2、删除数组多个元素(数组表示) 删除数组中单个元素 1、 新建一个数组, 将...


    这里直接介绍两种情况:
    1、删除数组中单个元素
    2、删除数组中多个元素(数组表示)

    删除数组中单个元素

    1、
    新建一个数组,
    将原数组中值写入新数组时进行判断是否为要删除的元素,
    如果是就直接跳过进行下一个循环,
    否则直接写入新数组,
    最后将新数组赋值给原数组
    以下给出简要代码

    //ints是原数组,temp是新数组,err是要删除的元素 
    	j=0for(int in: ints){
    		if(int == err)
    			continue;
    		else
    			temp[j++] = in;
    	}
    	ints=temp
    

    2、
    比较常见的遍历一遍数组,
    找到需要删除的元素,(这只限于删除第一个找到err元素,如果需要删除数列中全部的err元素,看代码中注释)
    后面所有的元素向前一个位置覆盖之前的元素,达到删除元素的效果
    以下是完整的函数代码
    (为了达到统一输出的效果,加了一个flag判定是否删除)

    public static int[] delete(int[] ints,int err) {
    		boolean flag = false;
    		int length = ints.length;
    		//这里只进行了找到第一个需要删除元素位置,
    		//并用后面的元素逐次向前覆盖,并不是真正的删除
    		//(删除是通过底下重新建立数组赋值进行的)
    		for(int i = 0; i < length; i++) {
    			if(err == ints[i]) {
    				for(int j = i; j < length - 1; j++) {
    					ints[j] = ints[j + 1];
    				}
    				length--;
    				flag = true;
    				break;//如果要删除全部的err元素 这里改为 i--;
    				//为了防止相邻相同的情况
    			}
    		}
    		if (flag)
    			System.out.println("删除" + err + "成功!");
    		else
    			System.out.println("输入err有误,不存在" + err +",无法删除");
    		
            //将删除后数组进行重新保存 并返回
            int[] result = new int[length];
            System.arraycopy(ints,0,result,0,length);
            return result;
    	}
    

    删除数组中多个元素(数组表示)

    新建一个数组
    将原数组写入新数组的同时对写入的元素进行判断是否在需要删除的数组中
    运用flag进行标记是否需要写入(即该元素是否在需要删除的数组中)
    通过fiag的标识,在新的数组中写入元素,
    最后将中间的temp数组通过copy再返回,原因是 删除元素后的数组长度是需要测量出来的,即为代码中的index。

    //在ints数组中删除包含res数组元素
        public static int[] delete(int[] ints,int[] errs) {
            int index = 0;
            int[] temp = new int[ints.length];
            //通过foreach的循环只能够进行遍历 并不能进行删除修改操作
            for (int in: ints){
                boolean flag = true;
                for (int err: errs)
                    if (in == err){
                        flag = false;
                        break;
                    }
                if(flag)
                    temp[index++]=in;
            }
            //将中间保存的temp数组进行重新保存(删除后面多余的长度) 并返回
            //index 也代表着长度 因为在每次获取值后++了
            //所以最终是比实际下标多1
            int[] result = new int[index];
            System.arraycopy(temp,0,result,0,index);
            return result;
        }
    

    另外也可以通过万能的Arrays.asList(ints) 将数组转化为list ,然后就直接运用循环加上remove函数删除就好了。

    附上一段测试的代码

    
        public static void main(String[] args) {
            int[] ints = new int[10];//初始数组
            for (int i = 0; i < ints.length; i++){
                ints[i] = i;
            }
            int[] err = new int[3];//初始数组
            for (int i = 0; i < err.length; i++){
                err[i] = i + 1 ;
            }
            err[2] = 52;//测试一下err不在ints中
            int[] result = delete(ints,err);
            System.out.println(Arrays.toString(err));
            System.out.println(Arrays.toString(ints));
            System.out.println(Arrays.toString(result));
        }
    

    以及结果:
    在这里插入图片描述

    第一篇博客,纪念一下🐶
    然而 各种小bug挺多的 第三次修改了。

    以下是最初的时候,直接进行写的,没有写方法。

      public static void main(String[] args) {
            int[] res = new int[2];//要求删除的元素值
            for (int i = 0; i < res.length; i++){
                res[i]=i + 2;
            }
    		int err = 5;
            int j = 0;
            int[] temp = new int[8];//用来存放新元素的数组
    		//在ints数组中删除包err元素
    		for(int in: ints){
    			if(int == err)
    				continue;
    			else
    				temp[j++] = in;
    		}
    		j = 0;
    		 for (int te: ints){
                System.out.println(te);
            }
    		
    		//在ints数组中删除包含res数组元素
            for (int in: ints){
                boolean flag = true;
                for (int re: res)
                    if (in == re)
                        flag = false;
                if(flag)
                    temp[j++]=in;
            }
            ints = temp;
    	
            for (int te: ints){
                System.out.println(te);
            }
        }
    

    这应该是结局了把enmmm

    展开全文
  • 数组中添加元素

    千次阅读 2019-01-27 23:28:16
    向数组添加元素 1、数组末尾添加元素 ... // 定义数组变量,data.length表示数组容量capacity  private int[] data;  // 定义数组存放数据大小  private int size;  // 有参构造方法,传入数...

    向数组中添加元素

    1、数组末尾添加元素

    (1)向数组末尾添加元素模型图

    (2)向数组末尾添加元素代码

    public class Array {
       
    // 定义数组变量,data.length表示数组容量capacity
       
    private int[] data;
       
    // 定义数组中存放数据大小
       
    private int size;

       
    // 有参构造方法,传入数组的容量capacity构造动态数组
       
    public Array(int capacity) {
           
    data = new int[capacity];
           
    size = 0;
       
    }

       
    // 无参构造方法,默认初始容量为capacity=10
       
    public Array(){
           
    this(10);
       
    }

       
    // 获取数组中元素个数
       
    public int getSize(){
           
    return size;
       
    }

       
    // 获取数组的容量
       
    public int getCapacity(){
           
    return data.length;
       
    }

       
    // 判断数组是否为空
       
    public boolean isEmpty(){
           
    return size == 0;
       
    }

       
    // 在数组末尾添加元素
        
    public void addLast(int e){
           
    if(size == data.length)
               
    throw new IllegalArgumentException("AddLast failed.Array is full.");
           
    data[size] = e;
           
    size ++;
       
    }
    }

    2、数组指定位置添加元素

    (1)向数组指定位置添加元素模型图

    (2)向数组指定位置添加元素代码

    public class Array {
    
        // 定义数组变量,data.length表示数组容量capacity
    
        private int[] data;
    
        // 定义数组中存放数据大小
    
        private int size;
    
    
    
        // 有参构造方法,传入数组的容量capacity构造动态数组
    
        public Array(int capacity) {
    
            data = new int[capacity];
    
            size = 0;
    
        }
    
    
    
        // 无参构造方法,默认初始容量为capacity=10
    
        public Array() {
    
            this(10);
    
        }
    
    
    
        // 获取数组中元素个数
    
        public int getSize() {
    
            return size;
    
        }
    
    
    
        // 获取数组的容量
    
        public int getCapacity() {
    
            return data.length;
    
        }
    
    
    
        // 判断数组是否为空
    
        public boolean isEmpty() {
    
            return size == 0;
    
        }
    
    
    
        // 在数组末尾添加元素
    
        public void addLast(int e) {
    
            if (size == data.length)
    
                throw new IllegalArgumentException("AddLast failed.Array is full.");
    
            data[size] = e;
    
            size++;
    
        }
    
    
    
        // 数组指定位置添加元素
    
        public void add(int index, int e) {
    
            if (size == data.length)
    
                throw new IllegalArgumentException("Add failed.Array is full.");
    
            if (index < 0 || index > size)
    
                throw new IllegalArgumentException("Add failed. Require index >= 0 and index <= size");
    
            for (int i = size - 1; i >= index; i--)
    
                data[i + 1] = data[i];
    
            data[index] = e;
    
            size++;
    
        }
    
    }

    (3)向数组末尾指定位置添加元素代码改造

    public class Array {
    
        // 定义数组变量,data.length表示数组容量capacity
    
        private int[] data;
    
        // 定义数组中存放数据大小
    
        private int size;
    
    
    
        // 有参构造方法,传入数组的容量capacity构造动态数组
    
        public Array(int capacity) {
    
            data = new int[capacity];
    
            size = 0;
    
        }
    
    
    
        // 无参构造方法,默认初始容量为capacity=10
    
        public Array() {
    
            this(10);
    
        }
    
    
    
        // 获取数组中元素个数
    
        public int getSize() {
    
            return size;
    
        }
    
    
    
        // 获取数组的容量
    
        public int getCapacity() {
    
            return data.length;
    
        }
    
    
    
        // 判断数组是否为空
    
        public boolean isEmpty() {
    
            return size == 0;
    
        }
    
    
    
    /*    // 在数组末尾添加元素
    
        public void addLast(int e) {
    
            if (size == data.length)
    
                throw new IllegalArgumentException("AddLast failed.Array is full.");
    
            data[size] = e;
    
            size++;
    
        }*/
    
    
    
        // 在数组末尾添加元素(复用add方法)
    
        public void addLast(int e) {
    
            add(size, e);
    
        }
    
    
    
        // 在数组头部添加元素(复用add方法)
    
        public void addFirst(int e) {
    
            add(0, e);
    
        }
    
    
    
        // 数组指定位置添加元素
    
        public void add(int index, int e) {
    
            if (size == data.length)
    
                throw new IllegalArgumentException("Add failed.Array is full.");
    
            if (index < 0 || index > size)
    
                throw new IllegalArgumentException("Add failed. Require index >= 0 and index <= size");
    
            for (int i = size - 1; i >= index; i--)
    
                data[i + 1] = data[i];
    
            data[index] = e;
    
            size++;
    
        }
    
    }

     

    如果感兴趣的童鞋,可以观看我下一篇博客:数组中查询元素和修改元素

    展开全文
  • 因此常采用顺序存储结构来表示数组。 由于存储单元是一维的结构,而数组可能是多维的结构,则用一组连续存储单元存放数组的数据元素就有次序约定的问题。如图所示的(a)的二维数组可以看作是如图所示的(b)所示...

    求数组指定元素的地址/求数组元素的下标

    一:数组元素的存储
    由于数组一般不做插入和删除操作,也就是说只要建立了数组,则结构中的数据元素的个数和元素之间的关系就不再发生变动。因此常采用顺序存储结构来表示数组。
    由于存储单元是一维的结构,而数组可能是多维的结构,则用一组连续存储单元存放数组的数据元素就有次序约定的问题。如图所示的(a)中的二维数组可以看作是如图所示的(b)所示的一维数组,也可以看做是如图所示的(c)中的一维数组。
    在这里插入图片描述
    二:对二维数组的存储形式有两种
    一种是一行序为主序的存储方式,如图(b)所示
    一种是一列序为主序的存储方式,如图(a)所示
    在这里插入图片描述
    由此,对于数组,一但确定了其维数和各维的长度,便可以为他分配存储空间。反之只要给出了一组下标便可以求出相应数组的存储位置.

    假设每个数组元素占用L个存储单元,则二维数组A[0……m-1,0……n-1](即下标从0开始,共有m行n列)中任一元素aij的存储位置可由下列公式确定:
    LOC(i,j)=LOC(0,0)+(n*i+j)L
    假设每个数组元素占用L个存储单元,则二维数组A[1……m,1……n](即下标从1开始,共有m行n列)中任一元素aij的存储位置可由下列公式确定:
    LOC(i,j)=LOC(1,1)+(n(I-1)+j-1)L*
    其中LOC(i,j)是aij的存储位置,LOC(0,0)是a(0,0)的存储位置,LOC(1,1)是a(1,1)的存储位置,根据不同的情况来决定数组的起始存储位置是a(0,0)还是a(1,1)

    举例:
    ①:假设以行序为主序存储的二维数组A=array[1……100,1……100],设每个数据元素占用两个存储单元,基地址为10,则LOC[5,5]为(818
    首先基地址题目中已经给我们了,即我们已经知道了a[1,1]的起始存储位置
    而次二维数组是以行序为主序存储的
    则此时**LOC[5,5]=[(5-1)100+(5-1)]3+10(你可以理解为在第五行之前有四行,在第五个元素之前有四个元素,第五个元素之前有四个元素,第四个元素结束的位置即第五个元素的起始地址)

    ②:设有数组A[i,j]数组的每个元素长度为3字节,i的值为1-8,j的值为1-16,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为**(BA+180**)
    由题意知此时的**LOC[5,8]=[(8-1)8+(5-1)]3+BA

    ③:二维数组A的每个元素是由10个字符组成的串,其行下标为0-8,列下标为1-10,。若A按行先存储,元素A[8,5]的起始地址与当A按列先存储时的元素(A[3,10])的起始地址相同。设每个字符占一个字节,因为

    LOC[8,5]=[(8-0)*10+(5-1)]=84
    则LOC[i,j]=(j-1)*9+i=84

    此道题选择题,在这里我用的是代入的方式,在这里我就不一一列出选项了,只把最终的结果给出了

    ④:设二维数组A[1-m,1-n]即m行n列按行存储在数组B[1……m*n]中则二维数组A[i,j]在一位数组B中的下标为
    (i-1)*j+i
    注意此道题是让求的是—下标—,而B的下标是从1开始的

    展开全文
  • 二维数组元素表示方法

    千次阅读 2018-12-04 15:27:30
    二维数组元素表示方法 a // 数组首行的地址 a[0] //元素a[0][0]的地址。 二维数组可以看成是一维数组的数组,a[0] 可以认为是数组名,数组名代表数组首元素的地址 a[0] 代表 a[0][0]的地址 *(a+0) //元素...

    二维数组
    二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。
    二维数组元素表示方法

     a                //  数组首行的地址
    
     a[0]            //元素a[0][0]的地址。 
     
     二维数组可以看成是一维数组的数组,(a[0] 、a[1] 、a[2] ) 。
     a[0] 可以认为是数组名,数组名代表数组首元素的地址, a[0] 代表 a[0][0]的地址
     
     *(a+0)        //元素a[0][0]的地址
     
    因为a是二维数组名,即是一维数组(a[0] 、a[1] 、a[2] )这三个元素的的首地址。
    a+0就是 a[0]的地址。
    *是取指针的值。
    那么*(a+0)就是取 a[0]的值。 a[0] 是一个数组名,他代表数组首元素a[0][0]的地址。
    
     a+1             // 数组第二行的地址
    
     a[1]+2       //  元素a[1][2]的地址        a[1] 是数组名,数组名是指向数组首元素的地址, a[1]+2  数组名+2 代表数组的第三个元素的地址。
     
     *(a+1)+2     //  元素 a[1][2]的地址       a+1  就是 a[1] 的地址 ,*(a+1)  就是 a[1][0]的地址, *(a+1)+2  就是 a[1][2]的地址。
    
     *(a[1]+2)      //元素 a [1][2] 的值         a[1] 是数组名。  a[1]+2  是 a[1][2]的地址,*(a[1]+2) 就是 元素 a[1][2]的值了。
    
    *(*(a+1)+2)     //元素 a[1][2]的值       a+1 代表 a[1]的地址,*(a+1) 代表 a[1][0] 的地址,*(a+1)+2 代表 a[1][2] 的地址。
    
    展开全文
  • 【JAVA】15、数组中元素表示方法

    千次阅读 2016-02-19 17:50:39
    本篇介绍数组中元素表示方法
  • 在C++,一个变量有地址,一个数组包含若干元素,每个数组元素都在内存占用存储单元,它们都有相应的地址;指针变量既然可以指向变量,也可以指向数组元素,所谓数组元素的指针就是数组元素的地址。 定义一个整型...
  • 删除数组中的 0 元素

    千次阅读 2018-05-20 11:16:08
    输入格式: 第一行一个整数表示数组个数 n ,第二行 n 个数据,表示数组元素。输出格式: 第一行 m 个数组元素,第二行一个整数表示现在数组元素个数。源代码:#include &lt;stdio.h&gt; int f(int *p,int...
  • 指针数组–数组元素为指针的数组 #include<stdio.h> //本质是一个数组,数组的元素全是指针 int main() { int a[]={1,2,3}; int * p[3]; //取数组的长度 = 数组名/首元素 int n = sizeof(p)/sizeof(p[0]);...
  • 数组元素前移

    千次阅读 2019-04-15 22:23:18
    有一个由整数组成的数组,数组元素共5个,由键盘输入,试将数组第一个元素移到数组末尾,其余数组元素依次前移一个位置后顺序输出。 【输入格式】 输入5个整数,表示数组元素。 【输出格式】 依次输出前移...
  • 统计List数组元素中,每个元素出现的次数 1、建立Map对象,key为数组的关键字,value为该关键字出现的次数。 2、循环遍历数组,在Map中查找关键字,如果没有就put进Map中,同时value值加1。如果有Map中有该元素,...
  • 数组元素的三种表示方式

    万次阅读 2017-02-18 10:19:07
    介绍了数组元素的三种表示方式:下标遍历、数组名和指针变量
  • vue(Js)从数组中删除元素

    万次阅读 2019-05-21 10:25:51
    使用方法:arr.splice(arr.indexOf(ele),length):表示先获取这个数组中这个元素的下标,然后从这个下标开始计算,删除长度为length的元素 这种删除方式适用于任何js数组 ...
  • JavaScript 专题(九)数组中查找指定元素

    万次阅读 多人点赞 2020-11-12 18:05:23
    上一篇文章,我们了解了数组扁平化的思想,并学习了 lodash 是如何处理数组扁平化的。 这次我们来讨论**在数组中查找元素**时所用的一些方法,并且参考lodash来实现我们自己的工具方法
  • key表示数组元素,value表示这个元素在数组出现的次数。最后对map进行遍历。 代码: /** * 使用map(不允许重复的),key是a中元素的值,value是元素出现的次数 * @param a * @return *...
  • A是一个长度为N的整形数组,其中可能包含重复的元素,例如A={1,2,2,3,2,1,3,2},删除数组中相同的元素后得到{1,2,3}, a) 如果数组没有排序,写一个C语言函数,输入参数为数组首地址和长度,删除其中重复的元素,...
  • js删除数组中元素

    万次阅读 2017-06-01 15:54:53
    一、从数组中删除指定值元素: 下面的代码使用了两种方式删除数组元素,第一种定义一个单独的函数,第二种为Array对象定义了一个removeByValue的方法,调用非常简单 定义函数removeByValue进行元素删除function ...
  • C语言删除数组中的0元素

    千次阅读 2020-06-18 23:09:36
    编写函数CompactIntegers,删除数组所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接收数组及其元素个数作为参数,函数返回值...第一行一个数,表示数组个数 第二行为每个数字,空格分开
  • 判断数组中是否存在重复的元素;数组查重;
  • 筛选数组中元素

    千次阅读 2016-09-26 11:04:01
    和数据库的SQL语句具有相似性,都是从数据堆根据条件进行筛选。 1.使用场景:  (1)NSPredicate给我留下最深印象的是两个数组求交集的一个需求,如果按照一般写法,需要2个遍历,但NSArray提供了一个...
  • js,删除数组中指定的某个元素

    万次阅读 2016-03-30 15:21:58
    首先可以给JS的数组对象定义一个函数,用于查找指定的元素数组中的位置,即索引,代码为: /**  * 给JS的数组对象定义一个函数,用于查找指定的元素数组中的位置,即索引  * @param val  * @returns {...
  • vue js删除数组中指定索引的元素

    千次阅读 2020-12-31 11:11:57
    在前端开发,我们经常需要对数组进行操作,增删改是经常的事情,那我们js该如何删除指定的下标元素呢???? 我们用splice来操作 1.定义和用法 splice() 方法用于添加或删除数组中元素。 注意:这种方法...
  • Js 删除数组中指定的元素

    千次阅读 2019-10-23 11:43:40
    要删除数组中的指定的元素,当然肯定少不了遍历,肯定得匹配指定的index,然后用数组的splice()方法来实现,因为pop()从数组尾部删除元素,shift()从数组头部删除第一个元素,还有delete(),当然,splice()方法可以...
  • java去除数组中重复元素的方法

    千次阅读 2020-07-21 20:08:01
    请设计一个方法,将一个int数组arr重复的元素去除,并且返回新数组newArr。 解法一 保留重复数字的第一次出现的元素 首先建立一个与原数组等长的标记数组flag[],它的下标与原数组下标相同,而我们只要改变它的...
  • 找出数组中唯一的重复元素

    千次阅读 2016-06-26 20:49:30
    要求每个数组元素只能访问一次,不用辅助存储空间。 分析:由于题目要求每个数组元素只能访问一次,不用辅助存储空间,可以从原理上入手,采用数学求和法,因为只有一个数字重复一次,而数又是连续的,根据累加和...
  • 在shell$#表示输入参数的个数; 在shell#用来获取一些和长度,个数相关的信息: shell定义一个数组: arrayname=(value1 value2 ......获取数组元素的个数: ... 那么${#arrayname[@]}表示数组中元素的个数...
  • 统计数组中元素出现次数

    万次阅读 2017-03-20 15:27:25
     若没有空间的限制,则可直接开辟一个大小等于元素最大值的数组对各元素进行统计,并且顺带还进行了时间复杂度为O(n)的排序(比快速排序还快哦)。  统计n个元素出现的次数,每个元素对应一个次数
  • jQuery删除数组中指定的元素

    千次阅读 2020-07-14 21:17:17
    jQuery删除数组中指定的元素 方法:arr.splice($.inArray(元素, 数组), 删除的个数); var arr = ['a','b','c','d']; arr.splice($.inArray('a', arr), 1); console.log(arr); 结果: [“b”, “c”, “d”] 注:...
  • 今天复习了一下C语言的数组部分,练习了数组元素的求和与冒泡排序。
  • ES6数组中删除指定元素

    千次阅读 2018-01-22 23:08:00
    知识点: ...ES6从数组中删除指定元素 findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。 arr.splice(arr.findIndex(item => item.id === data.id), 1) ...
  • 找出数组中元素的位置

    万次阅读 2017-12-16 00:58:07
    找出数组中元素的位置: 判断indexOf是否存在 function indexOf(arr, item) { // 用原型判断indexOf是否存在 if (Array.prototype.indexOf){ return arr.indexOf(item); } else { // 是在IE for (var i = 0; i ; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 772,128
精华内容 308,851
关键字:

如何表示数组中的数组元素