Java数组操作集合

0、定义一个Java数组

String[] aArray = newString[5];

String[] bArray ={"a","b","c", "d", "e"};

String[] cArray = newString[]{"a","b","c","d","e"};

第一种是定义了一个数组,并且指定了数组的长度,我们这里称它为动态定义。

 

第二种和第三种在分配内存空间的同时还初始化了值。

 

1、打印Java数组中的元素

int[] intArray = { 1,2, 3, 4, 5 };

String intArrayString =Arrays.toString(intArray);

 

// print directly willprint reference value

System.out.println(intArray);

// [I@7150bd4d

 

System.out.println(intArrayString);

// [1, 2, 3, 4, 5]

这里的重点是说明了Java中数组的引用和值得区别,第三行直接打印intArray,输出的是乱码,因为intArray仅仅是一个地址引用。第4行输出的则是真正的数组值,因为它经过了Arrays.toString()的转化。对Java初学者来说,引用和值仍需重视。

 

2、从Array中创建ArrayList

String[] stringArray ={ "a", "b", "c", "d", "e" };

ArrayList<String>arrayList = new ArrayList<String>(Arrays.asList(stringArray));

System.out.println(arrayList);

// [a, b, c, d, e]

为什么要将Array转换成ArrayList呢?可能是因为ArrayList是动态链表,我们可以更方便地对ArrayList进行增删改,我们并不需要循环Array将每一个元素加入到ArrayList中,用以上的代码即可简单实现转换。

 

3、检查数组中是否包含某一个值

 

String[] stringArray ={ "a", "b", "c", "d", "e" };

boolean b =Arrays.asList(stringArray).contains("a");

System.out.println(b);

// true

先使用Arrays.asList()将Array转换成List<String>,这样就可以用动态链表的contains函数来判断元素是否包含在链表中。

 

4、连接两个数组

第一种方法:

int[] intArray = { 1,2, 3, 4, 5 };

int[] intArray2 = { 6,7, 8, 9, 10 };

// Apache Commons Langlibrary

int[] combinedIntArray= ArrayUtils.addAll(intArray, intArray2);

ArrayUtils是Apache提供的数组处理类库,其addAll方法可以很方便地将两个数组连接成一个数组。

第二种方法:

//第一种形式: 比特数组 合二为一,  fatherData在前 sonData在后

public static byte[]addByteArray (byte[] fatherData,byte[] sonData) {

//最好加个判断fatherData或sonData是否为空

intfatherLen = fatherData.length ;

intsonLen = sonData.length ;

intallLen = fatherLen +sonLen ;

byte[]SData = new byte[allLen];

 

for(int i = 0; i < fatherLen; i++) {

SData[i]= fatherData[i];

}

for(int i = fatherLen, j = 0;  i <allLen;  i++,j++) {

SData[i]= sonData[j];

}

returnSData;

}

 

调用:

byte all[] = null;

byte data[] = {10,11,12};

all = addByteArray(all ,data);

 

//第二种形式:

/**

 * 数组拼接工具类

 * @author zhrjian

 */

public class ArrayUtils{

/**

 * 两个数组连接

 * @param father 在前

 * @param son 在后

 * @return

 */

publicstatic byte[] twoToOne(byte[] father,byte[] son){

if(father!=null&&son!=null){      //两个数组都不为空

byte[]all = new byte[father.length+son.length];

for(inti=0;i<all.length;i++){

if(i<father.length){

all[i]= father[i];

}else{

all[i]= son[i-father.length];

}

}

father = null;

returnall;

}else if(father==null&&son!=null){    //father为空son不为空

returnson;

}else if(father!=null&&son==null){    //father不为空son为空

returnfather;

}else{        //father和son全为空

returnnull;

}

}

 

/**

 * 将byte类型变量加入数组

 * @param father

 * @param data

 * @return

 */

publicstatic byte[] twoToOne(byte[] father,byte data){

if(father!=null){//两个数组都不为空

byte[]all = new byte[father.length+1];

for(inti=0;i<all.length-1;i++){

all[i]= father[i];

}

all[all.length-1]= data;

father = null;

returnall;

}else{//father为空son不为空

returnnew byte[]{data};

}

}

}

 

第三种方式:调用系统函数arraycopy

System.arraycopy(src,srcPos, dst, dstPos, length);

 

Copies length elementsfrom the array src, starting at offset srcPos, into the array dst, starting atoffset dstPos.

The source anddestination arrays can be the same array, in which case copying is performed asif the source elements are first copied into a temporary array and then intothe destination array.

Parameters:

src

 要复制内容的源数组

srcPos

 源数组的要复制内容的起始位置

dst

 要复制内容进去的数组

dstPos

 要复制内容进去的目标数组的位置

length

 要复制的元素长度

 

 

5、声明一个数组内链

method(newString[]{"a", "b", "c", "d","e"});

 

6、将数组中的元素以字符串的形式输出

// containing theprovided list of elements

// Apache common lang

String j =StringUtils.join(new String[] { "a", "b", "c" },", ");

System.out.println(j);

// a, b, c

同样利用StringUtils中的join方法,可以将数组中的元素以一个字符串的形式输出。

 

7、将Array转化成Set集合

Set<String> set =new HashSet<String>(Arrays.asList(stringArray));

System.out.println(set);

//[d, e, b, c, a]

在Java中使用Set,可以方便地将需要的类型以集合类型保存在一个变量中,主要应用在显示列表。同样可以先将Array转换成List,然后再将List转换成Set。

 

8、数组翻转

 

int[] intArray = { 1,2, 3, 4, 5 };

ArrayUtils.reverse(intArray);

System.out.println(Arrays.toString(intArray));

//[5, 4, 3, 2, 1]

依然用到了万能的ArrayUtils。

 

9、从数组中移除一个元素

 

int[] intArray = { 1,2, 3, 4, 5 };

int[] removed =ArrayUtils.removeElement(intArray, 3);//create a new array

System.out.println(Arrays.toString(removed));

再补充一个:将一个int值转化成byte数组

 

byte[] bytes =ByteBuffer.allocate(4).putInt(8).array();

 

for (byte t : bytes) {

System.out.format("0x%x", t);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星点点-

请我喝杯咖啡呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值