黑马程序员技术交流社区
标题: Java数组操作的10大方法 [打印本页]
作者: 黑妞~ 时间: 2014-8-28 10:51
标题: Java数组操作的10大方法
下面是精心整理的Java数组操作的10大方法,大部分代码都来自Stack Overflow。
0、定义一个Java数组- 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仅仅是一个地址引用。第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 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
复制代码
同样利用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);
- }
复制代码
作者: 粺¹³¼畅 时间: 2014-8-28 11:01
牛人啊,谢谢分享!
作者: 回头浪子心 时间: 2014-8-28 18:32
路过、、、、、
作者: hi2hcs 时间: 2014-8-30 09:41
受教!!!!
作者: 热火程序猿 时间: 2014-9-1 10:42
啊哦,玩转数组
作者: 迷失的独白 时间: 2014-9-9 00:02
学习了啊
作者: 烟默year 时间: 2014-10-28 12:00
我是来学习的!
作者: 想成为黑马 时间: 2014-11-4 11:55
看了后,受益匪浅
作者: chuck_heima 时间: 2014-11-8 12:59
收藏收藏 必须的!
作者: 艾维苏 时间: 2014-11-13 11:53
这个必须会~
作者: xiaguangcheng 时间: 2014-11-16 18:53
灰常实用,拿走了
作者: 一朵奇葩 时间: 2014-11-17 09:54
多谢分享,学习了
作者: rnyrnyrny 时间: 2014-11-21 12:07
已收藏,很好的总结
作者: 逗比程序员 时间: 2014-11-22 13:20
学习学习,参考参考
作者: scoto263 时间: 2014-11-25 21:22
搜藏一下。。。慢慢摸索。
作者: 茂茂 时间: 2014-12-1 21:35
实用,收藏
作者: 怪物军师 时间: 2014-12-1 22:25
果断收藏
作者: 怪物军师 时间: 2014-12-2 23:50
收藏一下,慢慢理解
作者: l763631191 时间: 2014-12-3 13:24
:)很好!!!收藏了~
作者: 武xiao 时间: 2014-12-12 21:35
很棒,差不多快忘了,看看就想起来了
作者: じ☆ve紫夜 时间: 2014-12-12 21:52
涨姿势了,嘻嘻!!!
作者: chaijie 时间: 2014-12-12 21:58
这个用起来更方便
作者: 武xiao 时间: 2014-12-16 21:37
我是来看看除了三个代码之外的方法
作者: 古月哥欠 时间: 2014-12-17 01:16
刚学,不过这个更全面,thank you!
作者: 飘渺之旅 时间: 2014-12-21 09:36
刚接触数组,学的还很浅,这个很是受用,谢谢楼主了。
作者: songkaihua 时间: 2014-12-21 10:07
刚学!二维数组学的不好!
作者: chaijie 时间: 2014-12-29 21:53
很果断的赞了
作者: q798500920 时间: 2015-1-4 11:52
快学到数组了 提前预习预习
作者: HHFSpeed 时间: 2015-1-9 21:17
正好用到,谢谢
作者: 木子轩 时间: 2015-1-10 16:31
还没有学到数组,正在学习正则表达式......
作者: 枪杆不如笔杆 时间: 2015-1-14 19:21
果然不错用库提供的方法还是比较给力的
作者: xygzp415 时间: 2015-1-16 21:28
请教一个问题关于上面的第6条使用StringUtils.join(Object[] array,String sperator)方法使用int[]数组不使用String[]为什么打印出来的是HashCodeint[] intArray = {1,2,3,4,5};
System.out.println(StringUtils.join(intArray,','));
C:\Users\Administrator.TOJZJCTKG2UXONZ\Desktop\1.jpg
C:\Users\Administrator.TOJZJCTKG2UXONZ\Desktop\1.jpg
打印的结果
[I@42a57993
C:\Users\Administrator.TOJZJCTKG2UXONZ\Desktop\2.jpg
但是StringUtils里面源代码缩写应该不会出现这种情况,请老师指教
下面是源代码的实现
public static String join(final Object[] array, String separator, final int startIndex, final int endIndex) {
if (array == null) {
return null;
}
if (separator == null) {
separator = EMPTY;
}
// endIndex - startIndex > 0: Len = NofStrings *(len(firstString) + len(separator))
// (Assuming that all Strings are roughly equally long)
final int noOfItems = endIndex - startIndex;
if (noOfItems <= 0) {
return EMPTY;
}
final StringBuilder buf = new StringBuilder(noOfItems * 16);
for (int i = startIndex; i < endIndex; i++) {
if (i > startIndex) {
buf.append(separator);
}
if (array != null) {
buf.append(array);
}
}
return buf.toString();
}
难道只能操作String类型的数组吗
C:\Users\Administrator.TOJZJCTKG2UXONZ\Desktop\3.jpg
作者: xygzp415 时间: 2015-1-16 21:30
不好意思本来是要贴图的,不想链接上去了图没有上去
作者: 张宁111 时间: 2015-1-21 21:27
小手一抖积分到手。
作者: xyycici 时间: 2015-1-30 19:27
这个真心不错。谢谢。
作者: 唐僧 时间: 2015-2-7 23:34
有点扛不住
作者: 骑士向前 时间: 2015-2-14 06:51
fighting!fighting!
作者: 木子轩 时间: 2015-2-26 16:57
学习咯.......
作者: lostnotes 时间: 2015-3-10 10:00
正好学习到数组,虽然还有一些东西不明吧还没学习到,但也受益匪浅。感谢分享
作者: keven1119 时间: 2015-3-19 14:51
收藏下,没事看看学习学习,谢谢分享.
作者: 小亮smile 时间: 2015-3-19 23:17
顶一个 赞一下!!!!
作者: 独孤忆 时间: 2015-3-20 21:20
顶大神,学习了
作者: 七十九刀 时间: 2015-3-20 21:45
收藏了!!{:3_51:}
作者: zhaotiao3080 时间: 2015-3-21 08:47
总结的很全面啊
作者: 风飘逸 时间: 2015-3-23 12:43
好多还不知道,收藏,点赞。
作者: 高怀 时间: 2015-3-26 00:55
顶!!!!!!
作者: 小胡 时间: 2015-12-27 23:30
牛人啊,受教了.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |