20165303魏煜第十周课上补做

  • 在数据结构和算法中,排序是很重要的操作,要让一个类可以进行排序,有两种方法:
  • 有类的源代码,针对某一成员变量排序,让类实现Comparable接口,调用Collection.sort(List)
  • 没有类的源代码,或者多种排序,新建一个类,实现Comparator接口 调用Collection.sort(List, Compatator)

针对下面的Student类,使用Comparator编程完成以下功能:

  1. 在测试类StudentTest中新建学生列表,包括自己和学号前后各两名学生,共5名学生,给出运行结果(排序前,排序后)
  2. 对这5名同学分别用学号和总成绩进行增序排序,提交两个Comparator的代码
    import junit.framework.TestCase;
    import org.junit.Test;

import java.util.LinkedList;
import java.util.List;
import java.util.*;

public class TestStudent extends TestCase {
public static void main(String[] args) {
List list = new LinkedList();
list.add(new Student("20165301", "陈谭飞",580.0));
list.add(new Student("20165302", "程上杰",640.0));
list.add(new Student("20165303", "魏煜",620.0));
list.add(new Student("20165304", "李松阳",600.0));
list.add(new Student("20165305", "苏振龙",570.0));
Iterator iter = list.iterator();
System.out.println("排序前,链表中的数据");
Collections.shuffle(list);
while (iter.hasNext()) {
Student stu = iter.next();
System.out.println(stu.getId() + " " + stu.getName()+ " "+stu.getTotalScore());
}
Collections.sort(list,new scoreComparator());
System.out.println("排序后,链表中的数据");
iter = list.iterator();
while (iter.hasNext()) {
Student stu = iter.next();
System.out.println(stu.getId() + " " + stu.getName()+ " "+stu.getTotalScore());
}
}
/@Test
public void testID(){
assertEquals();
}
/

}
两个代码
import java.util.Comparator;
public class IDComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Student st1 = (Student)o1;
Student st2 = (Student)o2;
return (Integer.parseInt(st1.getId())-Integer.parseInt(st2.getId()));
}
}
import java.util.Comparator;
public class scoreComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Student st1 = (Student)o1;
Student st2 = (Student)o2;
return (int) (st1.getTotalScore()-st2.getTotalScore());
}
}
1296850-20180506192059670-1822711697.png

1296850-20180506192107998-247814444.png

  • 参见附件,补充MyList.java的内容,提交运行结果截图(全屏)
    课下推送代码到码云
    1296850-20180506192205394-1386602975.png

import java.util.Iterator;

public class MyList {
public static void main(String[] args) {

    Node<Integer> S1 = new Node<Integer>(20165301, null);
    Node<Integer> S2 = new Node<Integer>(20165302, null);
    Node<Integer> S3 = new Node<Integer>(20165304, null);
    Node<Integer> S4 = new Node<Integer>(20165305, null);
    //把上面四个节点连成一个没有头结点的单链表
    S1.next = S2;
    S2.next = S3;
    S3.next = S4;
    //遍历单链表,打印每个结点的
    Node<Integer> s = S1;
    while (s != null) {
        System.out.println(s.data);
        s = s.next;
    }
    System.out.println();
    //把你自己插入到合适的位置(学号升序)
    Node<Integer> M = new Node<Integer>(20165303, null);
    s = S1;
    while (s != null) {
        if (s.data < 20165303 && s.next.data > 20165303) {
            M.next = s.next;
            s.next = M;
            break;
        }
        else {
            s = s.next;
        }
    }
    System.out.println();
    //遍历单链表,打印每个结点的
    s = S1;
    while (s != null) {
        System.out.println(s.data);
        s = s.next;
    }
    System.out.println();
    //从链表中删除自己
    s = S1;
    while (s != null) {
        if (s.next.data == 20165303) {
            s.next = s.next.next;
            break;
        }
        else {
            s = s.next;
        }
    }
    System.out.println();
    //遍历单链表,打印每个结点的
    s = S1;
    while (s != null) {
        System.out.println(s.data);
        s = s.next;
    }
}

}

课后习题
1296850-20180506192304809-369739582.png

1296850-20180506192311725-1763848690.png

1296850-20180506192318172-2077902729.png

  • 码云链接https://gitee.com/BESTI-IS-JAVA-2018/20165303WeiYujava/tree/master/exam10

转载于:https://www.cnblogs.com/Vventador/p/8999303.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值