Arrays类的常规使用

image.png

  1. package com.key.d14_packeg_02.Arrays;
  2. import java.util.Arrays;
  3. public class array {
  4. public static void main(String[] args) {
  5. int[] arr = {1,242,51,68,3,113,93};
  6. System.out.println(arr);
  7. /**
  8. * 1、打印数组内容
  9. */
  10. String array = Arrays.toString(arr);
  11. System.out.println(array);
  12. /**
  13. * 2、对数组进行排序(升序排列)
  14. */
  15. Arrays.sort(arr);
  16. System.out.println(Arrays.toString(arr));
  17. /**
  18. * 3、二分搜索(前提是数组必须排好序)
  19. * --如果找到,就返回索引值
  20. * --如果没找到就返回 -(应该插入位置的所以+1)
  21. */
  22. System.out.println(Arrays.binarySearch(arr, 113));
  23. }
  24. }

image.png

Arrays对于Comparator比较器的支持

image.png

  1. package com.key.d14_packeg_02.Arrays;
  2. import java.util.Arrays;
  3. import java.util.Comparator;
  4. public class ArraysDemo {
  5. public static void main(String[] args) {
  6. /**
  7. * 自定义数组的排序规则,Comparator比较器对象
  8. */
  9. //1、Arrays的sort()方法可以默认对数组进行升序排列
  10. int ages[] = {1,32,53,78,18,23};
  11. Arrays.sort(ages);
  12. System.out.println(Arrays.toString(ages));
  13. //需求:对数组进行降序排列,需要自定义比较对象(自定义比较对象只能支持引用类型的排序,所以要将Int变为Integer)
  14. Integer ages1[] = {9,32,53,78,18,23};
  15. /**
  16. * 参数一ages1:代表要被排序的数组
  17. * 参数二:匿名内部类对象,代表了一个比较器对象
  18. */
  19. Arrays.sort(ages1, new Comparator<Integer>() {
  20. @Override
  21. public int compare(Integer o1, Integer o2) {
  22. //制定比较规则
  23. /*
  24. if (o1 > o2) {
  25. return 1;
  26. }else if (o1 < o2){
  27. return -1;
  28. }
  29. return 0;
  30. */
  31. //数组升序排列
  32. //return o1 - o2;
  33. //数组降序排列,也可以return -(o1 - o2);
  34. return o2 - o1;
  35. }
  36. });
  37. System.out.println(Arrays.toString(ages1));
  38. System.out.println("---------------------------------------------");
  39. /**
  40. * 如果要排序的是对象数组要怎么办呢?
  41. */
  42. //创建学生对象
  43. Students students[] = new Students[3]; //创建三个学生对象
  44. students[0] = new Students("0ss7key",20,180.5);
  45. students[1] = new Students("张三",18,177.5);
  46. students[2] = new Students("李四",25,160.5);
  47. //打印数组,但是发现打印出来的对象的地址,需要去Students类中重写tostring方法
  48. System.out.println(Arrays.toString(students));
  49. //对对象数组进行排序
  50. //Arrays.sort(students); 这样写直接报错
  51. Arrays.sort(students, new Comparator<Students>() {
  52. @Override
  53. public int compare(Students o1, Students o2) {
  54. //按照年龄升序排序
  55. //return o1.getAge()-o2.getAge();
  56. //按照身高生序排序,这里需要用到Double.compare(),因为身高是double类型,如果还用减法去比较可能造成排序混乱
  57. return Double.compare(o1.getHeight(), o2.getHeight()); //身高升序排列
  58. }
  59. });
  60. System.out.println(Arrays.toString(students));
  61. }
  62. }

image.png