A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

张钶

中级黑马

  • 黑马币:2

  • 帖子:30

  • 精华:0

© 张钶 中级黑马   /  2013-3-25 20:04  /  1449 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张钶 于 2013-3-26 21:46 编辑

package it.cast.exercise;
import java.util.ArrayList;
import java.util.List;
import cn.itcast.bean.Person;
public class Exercise6 {
/**
  * 对集合中的元素进行排序
  * @param list 要排序的集合           
  */
public static void main(String[] args) {
  ArrayList<Person> al = new ArrayList<Person>(); //创建一个新的集合
  al.add(new Person("张三", 25));     //向集合中存储元素
  al.add(new Person("李四", 19));
  al.add(new Person("王五", 20));
  al.add(new Person("赵六", 28));
  sort(al);
  System.out.println(al);
}
public static <E> void sort(List<E> list) {
  for (int i = 0; i < list.size()-1; i++) {  //用选择排序的方法进行操作
   for (int j = i+1; j < list.size(); j++) {
    if (list.get(i).getAge() >  list.get(j).getAge())
     swap(list, i, j);    //交换两元素位置
   }
  }
}
public static <E> void swap(List<E> list, int index1, int index2) {  // 在方法上定义一个泛型
  E temp = list.get(index1);   // 定义一个临时变量, 记住其中一个元素
  list.set(index1, list.get(index2)); // 用第一个位置存放第二个位置上的元素
  list.set(index2, temp);    // 用第二个位置存放临时变量记住的元素
}
}


帮我看下是哪里错了?谢谢

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-26 12:23

评分

参与人数 1技术分 +1 收起 理由
scott0610 + 1

查看全部评分

3 个回复

倒序浏览
ArrayList<Person> al = new ArrayList<Person>(); //创建一个新的集合
上面你创建的事al这个容器,你看你下面取的是list中的东西,肯定出错赛

(int i = 0; i < list.size()-1; i++)

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
public static <E> void sort(List<E> list) {
          for (int i = 0; i < list.size()-1; i++) {  //用选择排序的方法进行操作
           for (int j = i+1; j < list.size(); j++) {
            if (list.get(i).getAge() >  list.get(j).getAge())
             swap(list, i, j);    //交换两元素位置
           }
          }

你这是字符串交换位置,有特有的compaeTo的方法
for (int i = 0; i < list.size(); i++) {
                        for (int j = 0; j < list.size() - i - 1; j++) {
                                int com = list.get(j).compareTo(list.get(j + 1));
                                if(com>0){
                                String temp = list.get(j);
                                list.set(j, list.get(j + 1));
                                list.set(j + 1, temp);
                                }
                        }
                }

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
安鹏宇 发表于 2013-3-25 20:51
public static  void sort(List list) {
          for (int i = 0; i < list.size()-1; i++) {  //用选择排序的方 ...

嗯,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马