Arrays工具类常见方法

举报
兔老大 发表于 2021/04/22 00:45:51 2021/04/22
【摘要】 Arrays类的常见操作 排序 : sort()查找 : binarySearch()比较: equals()填充 : fill()转列表: asList()转字符串 : toString()复制: copyOf() 排序 : sort() // *************排序 sort*...

Arrays类的常见操作

  1. 排序 : sort()
  2. 查找 : binarySearch()
  3. 比较: equals()
  4. 填充 : fill()
  5. 转列表: asList()
  6. 转字符串 : toString()
  7. 复制: copyOf()

排序 : sort()


  
  1. // *************排序 sort****************
  2. int a[] = { 1, 3, 2, 7, 6, 5, 4, 9 };
  3. // sort(int[] a)方法按照数字顺序排列指定的数组。
  4. Arrays.sort(a);
  5. System.out.println("Arrays.sort(a):");
  6. for (int i : a) {
  7. System.out.print(i);
  8. }
  9. // 换行
  10. System.out.println();
  11. // sort(int[] a,int fromIndex,int toIndex)按升序排列数组的指定范围
  12. int b[] = { 1, 3, 2, 7, 6, 5, 4, 9 };
  13. Arrays.sort(b, 2, 6);
  14. System.out.println("Arrays.sort(b, 2, 6):");
  15. for (int i : b) {
  16. System.out.print(i);
  17. }
  18. // 换行
  19. System.out.println();
  20. int c[] = { 1, 3, 2, 7, 6, 5, 4, 9 };
  21. // parallelSort(int[] a) 按照数字顺序排列指定的数组(并行的)。同sort方法一样也有按范围的排序
  22. Arrays.parallelSort(c);
  23. System.out.println("Arrays.parallelSort(c):");
  24. for (int i : c) {
  25. System.out.print(i);
  26. }
  27. // 换行
  28. System.out.println();
  29. // parallelSort给字符数组排序,sort也可以
  30. char d[] = { 'a', 'f', 'b', 'c', 'e', 'A', 'C', 'B' };
  31. Arrays.parallelSort(d);
  32. System.out.println("Arrays.parallelSort(d):");
  33. for (char d2 : d) {
  34. System.out.print(d2);
  35. }
  36. // 换行
  37. System.out.println();

在做算法面试题的时候,我们还可能会经常遇到对字符串排序的情况,Arrays.sort() 对每个字符串的特定位置进行比较,然后按照升序排序。


  
  1. String[] strs = { "abcdehg", "abcdefg", "abcdeag" };
  2. Arrays.sort(strs);
  3. System.out.println(Arrays.toString(strs));//[abcdeag, abcdefg, abcdehg]

查找 : binarySearch()


  
  1. // *************查找 binarySearch()****************
  2. char[] e = { 'a', 'f', 'b', 'c', 'e', 'A', 'C', 'B' };
  3. // 排序后再进行二分查找,否则找不到
  4. Arrays.sort(e);
  5. System.out.println("Arrays.sort(e)" + Arrays.toString(e));
  6. System.out.println("Arrays.binarySearch(e, 'c'):");
  7. int s = Arrays.binarySearch(e, 'c');
  8. System.out.println("字符c在数组的位置:" + s);

比较: equals()


  
  1. // *************比较 equals****************
  2. char[] e = { 'a', 'f', 'b', 'c', 'e', 'A', 'C', 'B' };
  3. char[] f = { 'a', 'f', 'b', 'c', 'e', 'A', 'C', 'B' };
  4. /*
  5. * 元素数量相同,并且相同位置的元素相同。 另外,如果两个数组引用都是null,则它们被认为是相等的 。
  6. */
  7. // 输出true
  8. System.out.println("Arrays.equals(e, f):" + Arrays.equals(e, f));

填充 : fill()


  
  1. // *************填充fill(批量初始化)****************
  2. int[] g = { 1, 2, 3, 3, 3, 3, 6, 6, 6 };
  3. // 数组中所有元素重新分配值
  4. Arrays.fill(g, 3);
  5. System.out.println("Arrays.fill(g, 3):");
  6. // 输出结果:333333333
  7. for (int i : g) {
  8. System.out.print(i);
  9. }
  10. // 换行
  11. System.out.println();
  12. int[] h = { 1, 2, 3, 3, 3, 3, 6, 6, 6, };
  13. // 数组中指定范围元素重新分配值
  14. Arrays.fill(h, 0, 2, 9);
  15. System.out.println("Arrays.fill(h, 0, 2, 9);:");
  16. // 输出结果:993333666
  17. for (int i : h) {
  18. System.out.print(i);
  19. }

转列表 asList()


  
  1. // *************转列表 asList()****************
  2. /*
  3. * 返回由指定数组支持的固定大小的列表。
  4. * (将返回的列表更改为“写入数组”。)该方法作为基于数组和基于集合的API之间的桥梁,与Collection.toArray()相结合 。
  5. * 返回的列表是可序列化的,并实现RandomAccess 。
  6. * 此方法还提供了一种方便的方式来创建一个初始化为包含几个元素的固定大小的列表如下:
  7. */
  8. List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
  9. System.out.println(stooges);

转字符串 toString()


  
  1. // *************转字符串 toString()****************
  2. /*
  3. * 返回指定数组的内容的字符串表示形式。
  4. */
  5. char[] k = { 'a', 'f', 'b', 'c', 'e', 'A', 'C', 'B' };
  6. System.out.println(Arrays.toString(k));// [a, f, b, c, e, A, C, B]

复制 copyOf()


  
  1. // *************复制 copy****************
  2. // copyOf 方法实现数组复制,h为数组,6为复制的长度
  3. int[] h = { 1, 2, 3, 3, 3, 3, 6, 6, 6, };
  4. int i[] = Arrays.copyOf(h, 6);
  5. System.out.println("Arrays.copyOf(h, 6);:");
  6. // 输出结果:123333
  7. for (int j : i) {
  8. System.out.print(j);
  9. }
  10. // 换行
  11. System.out.println();
  12. // copyOfRange将指定数组的指定范围复制到新数组中
  13. int j[] = Arrays.copyOfRange(h, 6, 11);
  14. System.out.println("Arrays.copyOfRange(h, 6, 11):");
  15. // 输出结果66600(h数组只有9个元素这里是从索引6到索引11复制所以不足的就为0)
  16. for (int j2 : j) {
  17. System.out.print(j2);
  18. }
  19. // 换行
  20. System.out.println();

 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/102470489

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。