ArrayCopy方法[Java]


title: JavaArrayCopy方法
date: 2020-03-23 16:43:51
biog:https://www.huqifa.com/
tags:
- Java
categories:
- Java


ArrayCopy()

作为小白一直在使用for循环对数组进行复制,添加和删除,学习过程中发现ArrayCopy()方法在对数组进行删除,添加的时候更加高效,便利。

我们先来看一下底层源码:

    public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);

    /**
     * Returns the same hash code for the given object as
     * would be returned by the default method hashCode(),
     * whether or not the given object's class overrides
     * hashCode().
     * The hash code for the null reference is zero.
     *
     * @param x object for which the hashCode is to be calculated
     * @return  the hashCode
     * @since   1.1
     * @see Object#hashCode
     * @see java.util.Objects#hashCode(Object)
     */

src:要复制的数组(原数组)

srcPos:复制源数组的起始位置

dest:目标数组

destPos:目标数组的下标位置

length:要复制的长度

直观的说就是:

  • Arraycopy(被复制的数组, 从第几个元素开始复制, 要复制到的数组, 从第几个元素开始粘贴, 一共需要复制的元素个数);

使用ArrayCopy()直接复制数组

public class TestArrayCopy {
	public static void main(String[] args) {
		String[] s1 = {"aa","bb","cc","dd","ee"};
		String[] s2 = new String[10];
		
		System.arraycopy(s1,1,s2, 1, 3);
		
		for (int i = 0; i < s2.length; i++) {
			System.out.println(i+"--"+s2[i]);
		}
	}
}
  • 通过Arraycopy()方法,把s1数组第一个位置复制到s2第一个位置中,复制长度3.

在这里插入图片描述

使用ArrayCopy()删除数组中的蔡徐坤

给定一个明星数组,我们的目标是删除蔡徐坤。

public class TestArrayCopy {
	public static void main(String[] args) {
		String[] s = {"胡歌","彭于晏","蔡徐坤","周润发","周星驰"};
		removeElement(s, 3);
	}
	public static String[] removeElement(String[] s,int index) {
		System.arraycopy(s,index,s,index-1,s.length-index);
		s[s.length-1] = null;
		for (int i = 0; i < s.length; i++) {
			System.out.println(i+"--"+s[i]);
		}
		return s;
	}
	}

在这里插入图片描述

通过对数组进行自身的复制,我们成功的把蔡徐坤删除。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值