当前位置: 首页 > wzjs >正文

小天才电话手表网站网站建设公司电话销售话术

小天才电话手表网站,网站建设公司电话销售话术,湖南省住建云公共服务平台,百度竞价推广方法这段 Java 代码展示了两种排序方式的用法,分别是: 对普通数组进行排序(Integer[] nums)对对象数组进行排序(Student[] students) 我来一步步给你讲清楚: ✅ 第1部分:普通数组降序排…

这段 Java 代码展示了两种排序方式的用法,分别是:

  1. 对普通数组进行排序Integer[] nums
  2. 对对象数组进行排序Student[] students

我来一步步给你讲清楚:


✅ 第1部分:普通数组降序排序

static Integer[] nums = {3, 1, 4, 1, 5, 9};
  • 这是一个整型对象数组(Integer[]),不是基础类型 int[],因为 Arrays.sort 的自定义排序器只接受对象数组。
  • 接下来用一个 匿名内部类 实现 Comparator<Integer>
Arrays.sort(nums, new Comparator<Integer>() {@Overridepublic int compare(Integer a, Integer b) {return b - a; // 降序:大的在前}
});

➕解释:

  • Arrays.sort(数组, 比较器) 会按照你提供的规则来排。

  • compare(a, b) 返回:

    • 0 表示 a > ba 应该排在后面(升序)

    • <0 表示 a < ba 应该排在前面

  • 所以 return b - a 就是降序的排序。


✅ 第2部分:对象数组排序(Student[]

static class Student {String name;int score;Student(String name, int score) {this.name = name;this.score = score;}
}

➕解释:

定义了一个 Student 类,每个学生有两个属性:名字和成绩。

然后我们有一个数组:

Student[] students = {new Student("Alice", 90),new Student("Bob", 85)
};

排序逻辑如下:

Arrays.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student a, Student b) {if (a.score != b.score)return b.score - a.score; // 分数高的在前,降序return a.name.compareTo(b.name); // 分数相同按名字升序}
});

➕解释:

  • 如果两个学生分数不相等,就按分数排,分数高的在前。
  • 如果分数一样,就比较名字,按字母表顺序排(升序)。

✅ 总结

你能学到的点:

内容解释
Arrays.sort(数组, Comparator)对数组自定义排序
return a - b升序
return b - a降序
对象数组需要根据字段来自定义排序
compareTo()比较字符串大小的方法

如果你想打印排序后的结果,也可以加上:

System.out.println(Arrays.toString(nums)); // 打印排序后的数字数组for (Student s : students) {System.out.println(s.name + " " + s.score);
}

这个问题问得非常好!我们来详细解释一下 Java 中 Comparator 的排序规则,尤其是 compare(a, b) 这个函数的返回值含义


✅ 一、compare(a, b) 的返回值含义:

在 Java 的排序逻辑中(比如 Arrays.sort() 使用的 Comparator):

compare(a, b) 返回值意义
< 0表示 a < b,a排前面
= 0表示 a = b,位置不变
> 0表示 a > b,a排后面

✅ 二、奇偶相同,按数值升序 return a - b

比如 a = 3, b = 5:

return a - b = 3 - 5 = -2

因为是负数,表示 a < b,3 会排在 5 前面,这就实现了升序排序


✅ 三、奇偶不同,奇数 < 偶数:

➤ 如果 a 是奇数,b 是偶数:
  • 例如 a = 3, b = 4
  • a % 2 == 1 成立
  • return (a % 2 == 1) ? -1 : 1; → 返回 -1
  • 表示 a < b奇数排在前
➤ 如果 a 是偶数,b 是奇数:
  • 例如 a = 4, b = 3
  • a % 2 == 1 不成立
  • 返回 1,表示 a > b偶数排在后

✅ 四、这个排序实现的最终目标:

把数组中的奇数排在前面、偶数排在后面,且各自内部都是升序排列


✅ 补充一嘴:为什么用 a - b 可以比较大小?

a - b 本质上是:

  • 负值 → a 小于 b
  • 0 → 相等
  • 正值 → a 大于 b

这正好符合 compare(a, b) 函数需要的三种返回情况。


你现在遇到这个错误是因为你混用了两种类型:


🚫 报错解释

  1. Arrays.sort(int[], Comparator):这是错误的,因为你传入的是 int[]基本类型数组),但带 Comparator 的排序方法 只能用于对象类型的数组,比如 Integer[]
  2. Arrays.sort(ArrayList<Integer>, Comparator):这是错误的,因为 Arrays.sort() 只接受数组(T[]),而 ArrayList 是一个集合,不是数组。

✅ 正确的写法(取决于你用什么类型)

✅ 如果你用的是 数组
Integer[] arr = {3, 1, 4, 2}; // 注意:是 Integer[] 不是 int[]Arrays.sort(arr, new Comparator<Integer>() {@Overridepublic int compare(Integer a, Integer b) {// 偶数 > 奇数;相同奇偶性按升序if (a % 2 == b % 2) return a - b;return (a % 2 == 1) ? -1 : 1;}
});
System.out.println(Arrays.toString(arr)); // [1, 3, 2, 4]
✅ 如果你用的是 ArrayList
ArrayList<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(4);
list.add(2);Collections.sort(list, new Comparator<Integer>() {@Overridepublic int compare(Integer a, Integer b) {if (a % 2 == b % 2) return a - b;return (a % 2 == 1) ? -1 : 1;}
});
System.out.println(list); // [1, 3, 2, 4]

❗关键点记住:

你用的是什么排序方法要求的类型
int[]Arrays.sort(arr)无法使用 Comparator
Integer[]Arrays.sort(arr, cmp)✅ 可以使用 Comparator
ArrayList<T>Collections.sort(list, cmp)✅ 正确

如果你告诉我你用的是哪种变量(int[]Integer[]ArrayList<Integer>),我可以直接帮你写出完整的正确代码。你现在代码中变量是哪个?


文章转载自:

http://QKMxqJ3g.fwbLh.cn
http://npmGyD9I.fwbLh.cn
http://kO2DXrSe.fwbLh.cn
http://R7VJPtKM.fwbLh.cn
http://gtKgPvL5.fwbLh.cn
http://WODR4F10.fwbLh.cn
http://GezERNlg.fwbLh.cn
http://tlNye9Ra.fwbLh.cn
http://rUT2xPjJ.fwbLh.cn
http://0SjnemHG.fwbLh.cn
http://tIaca6ve.fwbLh.cn
http://RItlTCJF.fwbLh.cn
http://5muKUj33.fwbLh.cn
http://RFpmRBkr.fwbLh.cn
http://qkB1B7xs.fwbLh.cn
http://jOH76vT3.fwbLh.cn
http://nMtzKvZU.fwbLh.cn
http://pOnCPdd4.fwbLh.cn
http://M3kOA01y.fwbLh.cn
http://x6TFCk5K.fwbLh.cn
http://izPEwBOz.fwbLh.cn
http://LKKzeTfl.fwbLh.cn
http://OMail23v.fwbLh.cn
http://SG1uRs9O.fwbLh.cn
http://51OkC8zT.fwbLh.cn
http://BQ2L7JEf.fwbLh.cn
http://7KReOxMU.fwbLh.cn
http://YkVPKVkw.fwbLh.cn
http://KeDbAuRN.fwbLh.cn
http://iMjKK9cl.fwbLh.cn
http://www.dtcms.com/wzjs/731277.html

相关文章:

  • 做网站必须要加v吗如何在凡科建设网站
  • asp网站安全吗求职简历模板免费可编辑
  • 免费网站后台管理系统app开发公司定制小程序
  • 北京小型网站建设万网一个ip建立多个网站
  • 怎么给自己的网站推广深圳华强北招聘网
  • 临沂医院手机网站建设vi系统设计是什么
  • 做网站划算还是做app划算网站开发的软件环境有哪些
  • 沈阳网站建设 南塔厚街镇网站仿做
  • server2003网站建设互联网营销师怎么报名
  • 长春做网站seoflash网站代码下载
  • 济宁外贸网站建设淮北市建设协会网站
  • ireal 网站建设网站模板移植
  • 阿里域名购买网站金属质感 网站
  • 企业自己做网站方法做网站都是用源码么
  • 做外贸的经常浏览的三个网站中国徐州网
  • 网站开发会计科目企业网站模板php
  • 如何把资料上传到网站手机网站端域名怎样做解析
  • 蔡家坡网站开发网站建设基础问题
  • 商城购物网站有哪些模块淘宝客聚惠购的网站怎么做
  • 网站建设丨找王科杰专业2017做那些网站致富
  • 惠州淘宝网站建设网页设计实训报告结论
  • 零食网站模板导航门户网站怎么做
  • 兰州门户网站建设wordpress悬浮广告
  • 免费网站模板制作网上交易网
  • 沧县住房和城乡建设局网站游戏公司有哪些
  • 开放大学门户网站建设方案wordpress仿淘宝
  • 做一晚水泥工歌曲网站wordpress解析优化
  • 学做网站丛什么开始jsp做网站用什么封装字符串
  • 找网站公司制作网站凡科邮箱手机登录
  • 做网站设计的电话湖南微信网站公司