【Java】数组操作的13种方法

内容来自StackoverFlow.可能对一些大神来讲太简单,但是这里好多用法我真的第一次用,学习了.


0.定义一个数组

String[] aArray = new String[5];
String[] bArray = {"a", "b", "c", "d", "e"};
String[] cArray = new String{"a", "b", "c", "d", "e"};

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

第二和第三种在分配内存的时候同时进行了初始化.


1.打印Java数组中的元素

int[] intArray = { 1, 2, 3, 4, 5 };
String intArrayString = Arrays.toString(intArray);

// print directly will print reference value
System.out.println(intArray);
// [I@7150bd4d

System.out.println(intArrayString);
// [1, 2, 3, 4, 5]

这里重点说明了Java数组值和引用的区别,第三行代码直接打印intArray输出的是乱码,因为intArray仅仅是一个引用地址,第四行代码输出的是真正的数组值,因为它经过了Arrays.toString()的转化.


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转化为ArrayList<String>,然后可以通过contains()方法判断元素是否包含在链表中.


4.连接两个数组

int[] intArray = { 1, 2, 3, 4, 5 };
int[] intArray2 = { 6, 7, 8, 9, 10 };
// Apache Commons Lang library
int[] combinedIntArray = ArrayUtils.addAll(intArray, intArray2);
ArrayUtils是Apache提供的数组处理类库,其addAll()方法可以很方便的将两个数组连接成一个数组.


5.声明一个数组内链

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


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

// containing the provided list of elements
// Apache common lang
String j = StringUtils.join(new String[] { "a", "b", "c" }, ", ");
System.out.println(j);
// a, b, c

同样利用StringUtil中的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));

10.将一个int值转化为Byte数组

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

for (byte t : bytes) {
    System.out.format("0x%x ", t);
}


11.复制数组

int[] intArray1 = {1,2,3,4,5};
int[] intArray2 = new int[5];
System.arrayCopy(intArray1, 0, intArray2, 0, intArray2.length);

第一个参数是源字符串,第二个参数代表着从源数组的哪一个位置开始复制,第三个参数是目的数组,第四个参数代表着在目的数组中放置复制内容的起始位置,第五个参数代表着复制内容的长度.


12.对数组进行排序

double[] num = {1.0, 5.2, 3.7, 2.9, 4.2};
java.util.Arrays.sort(num);

Arrays类中还有很多有用的方法.




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。