求助求助,求大神解析,谢谢了

weixin_42504422 2018-06-23 04:40:14
Person p1 = new Person("张三","男",25);
Person p2 = new Person("李四","女",22);
Person p3 = new Person("王五","男",16);
Person p4 = new Person("李四","女",22);
Person p5 = new Person("赵六","男",18);
Person p6 = new Person("钱七","女",28);

//p1 = p2;
//System.out.println(p1);
//这个是可以编译运行,打印"李四","女",22
ArrayList<Person> array = new ArrayList<Person>();//位置不够装集合就不写了
for(int i = 0;i<array.size();i++) {
for(int j = 1;j<array.size();j++) {
if(array.get(i).getAge()>array.get(j).getAge()) {
array.get(j) = array.get(i);//这里就报错了都不能编译,这是为啥?
}
}
}
...全文
239 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42504422 2018-06-25
  • 打赏
  • 举报
回复
引用 11 楼 yjsl__ 的回复:
这行改一下 array.get(j) = array.get(i);//这里就报错了都不能编译,这是为啥?
Collections.swap(array, i, j);

好吧这么多的类和方法,你们是怎么记住的
八位比特 2018-06-24
  • 打赏
  • 举报
回复
你的array.get返回的是个对象。是堆里的东西,怎么能把堆里的东西=堆里的东西? 只听说过把堆里的东西给栈上的变量,没见过两个堆传值的
weixin_42504422 2018-06-24
  • 打赏
  • 举报
回复
但是我要如何实现集合中的对象按年龄大小排序呢?
weixin_42504422 2018-06-24
  • 打赏
  • 举报
回复
懂了
yjsl__ 2018-06-24
  • 打赏
  • 举报
回复
这行改一下 array.get(j) = array.get(i);//这里就报错了都不能编译,这是为啥?
Collections.swap(array, i, j);
weixin_42504422 2018-06-24
  • 打赏
  • 举报
回复
引用 9 楼 qq_39875859 的回复:
用一个集合的工具类就行
ArrayList<Person> array = new ArrayList<Person>();
Collections.sort(array, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {

return o2.getAge()-o1.getAge();
}
});

没学过没用过
俊美的不像话 2018-06-24
  • 打赏
  • 举报
回复
用一个集合的工具类就行
ArrayList<Person> array = new ArrayList<Person>();
Collections.sort(array, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {

return o2.getAge()-o1.getAge();
}
});


stacksoverflow 2018-06-23
  • 打赏
  • 举报
回复
赋值符号等号左边必须是变量,array.get(j)返回的是一个地址,不能给地址赋值。所以可以改成这样:
array.set(j, array.get(i));
weixin_42504422 2018-06-23
  • 打赏
  • 举报
回复
引用 3 楼 stacksoverflow 的回复:
说错了,忽略2楼。晚上回。

好的,我等着
stacksoverflow 2018-06-23
  • 打赏
  • 举报
回复
说错了,忽略2楼。晚上回。
stacksoverflow 2018-06-23
  • 打赏
  • 举报
回复
应该只能给变量赋值,不能直接对地址赋值,改成这样:
Person temp = array.get(i);
array.get(j)= temp;
weixin_42504422 2018-06-23
  • 打赏
  • 举报
回复
请忽略嵌套for 里面 j= i+1

50,639

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧