Java中集合的程序练习

来源:互联网 发布:dnf组队队员网络冲突 编辑:程序博客网 时间:2024/06/05 09:13

一、运用所学集合的知识,写出一个奥运会奖牌榜排序程序,具体要求如下:

  1.每个国家都分别拥有金牌银牌铜牌属性。

  2.对各个国家实现奖牌榜排序,排序规则为:先比较金牌,如果金牌数相同则比较银牌,如果银牌数相同则比较铜牌

    如果铜牌数也相同,则比较国家的名字

  3.打印输出奖牌榜

package day5;

import java.util.ArrayList;

/**
 * 实现排序接口,能够使用 Collections 类排序
 * 
 * @author davyzhu
 * 
 */
public class Country implements Comparable {

 private int goldNum;

 private int silverNum;

 private int bronzeNum;

 private String name;

 /**
  * 构造方法
  * 
  * @param name
  * @param goldNum
  * @param silverNum
  * @param bronzeNum
  */

 public Country(String name, int goldNum, int silverNum, int bronzeNum) {
  this.name = name;
  this.goldNum = goldNum;
  this.silverNum = silverNum;
  this.bronzeNum = bronzeNum;

 }

 /**
  * 
  * 重写toString()方法
  */

 public String toString() {
  return "国家 :" + this.name + " 金牌数:" + this.goldNum + " 银牌数:"
    + silverNum + " 铜牌数:" + bronzeNum;
 }

 /**
  * 通过金牌,银牌,铜牌数排序
  * 
  */
 public int compareTo(Object o) {
  Country p = (Country) o;
  int s;
  if ((s = (p.getGoldNum() - this.getGoldNum())) != 0)
   return s;

  else if ((s = (p.getSilverNum() - this.getSilverNum())) != 0)
   return s;

  else if ((s = (p.getBronzeNum() - this.getBronzeNum())) != 0)

   return s;
  return (compareTo(p.getName(), this.getName()));

 }
    //*******比较国家名字*******
 private int compareTo(String name2, String name3) {
  int s, i = 0;

  if ((s = (name3.charAt(i) - name2.charAt(i))) != 0)

   return s;
  else
   i++;
  return 0;

 }
   
 /**
  * 
  * 国家名字相同的处理
  * @return
  */
 
 public boolean equals(Object o){
  boolean b = false;
  ArrayList l = (ArrayList) o;
  
  
  return b;
 }
 
 
 
 
 public int getGoldNum() {
  return goldNum;
 }

 public int getSilverNum() {
  return silverNum;
 }

 public String getName() {
  return name;
 }

 public int getBronzeNum() {
  return bronzeNum;
 }

}

package day5;
/**
 * 
 * 测试类
 */

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

import junit.framework.TestCase;
import static java.lang.System.out;

public class test extends TestCase {

 public void test() {

  Country c1 = new Country("China", 51, 10, 37);
  Country c2 = new Country("Austalia", 15, 22, 8);
  Country c3 = new Country("Russian", 21, 22, 21);
 

  Country c4 = new Country("ASA", 21, 22, 21);
  Country c5 = new Country("ASB", 21, 22, 21);

  ArrayList list = new ArrayList();
  // 添加元素

  list.add(c1);
  list.add(c2);
  list.add(c3);
  list.add(c4);
  list.add(c5);
  
  this.print(list);

  // Collections 排序,需要用到compareTo()方法
  Collections.sort(list);
  out.println("******排序后的列表******");
  this.print(list);

 }

 /**
  * 打印 list 中所有对象
  * 
  * @param list
  */

 public void print(List list) {
  Iterator it = list.iterator();
  while (it.hasNext()) {
   Object o = it.next();
   // 输出对象本身时,会自动调用 toString() 方法
   // 如果对象本身没有重写 toString() ,就会去调用父类 Object 中的 toString() 方法
   // Object 中规定 toString() 会打印出对象所在的包名.类名+hashCode
   out.println(o);
  }
  
  
  
 }

}

0 0