1、實驗要求 本實驗要求:以分組軍訓為背景,綜合體驗集合與串列的實際業務應用模式和一般組合。 1-1. 業務說明: 1-1.1. 本實驗以學校按男女性別分組進行軍訓為業務背景。 1-1.2. 常規而言,軍訓物件包括年級或班級的所有學生集體。 1-1.3. 由于男女性別的差異原因,實際軍訓時需要按性別分組進行。 1-1.4. 本實驗從技術應用的角度來模擬對軍訓學生集合的分組。 1-1.5. 分組后,對不同性別組的成員按照身高進行排序。 1-1.6. 本業務關鍵概念:學生集合、分組以及排序。 1-2. 創建工程并配置環境: 1-2.1. 限制1. 創建實驗工程,命名為:SE_JAVA_EXP_E041; 1-2.2. 限制2. 創建包,命名為:cn.campsg.java.experiment; 1-2.3. 限制3. 創建包,命名為:cn.campsg.java.experiment.entity; 1-3. 創建受訓者物體類: 1-3.1. 限制1. 在cn.campsg.java.experiment.entity 包中創建受訓者物體類:Trainee。 1) Trainee類須實作Comparable 介面。 1-3.2. 為Trainee類創建屬性,要求如下:序號屬性權限屬性名稱屬性型別屬性說明1privatenameString姓名2privatesexString性別(分female和male兩種)3Privateheightfloat身高說明:1.為上列屬性實作setter/getter方法; 1-3.3. 為Trainee類創建0參構造器。 1-3.4. 為Trainee類實作Comparable的介面方法,介面方法要求如下:訪問權限方法名稱回傳值方法引數引數說明publiccompareTointTrainee anthor其它比較物件方法說明本方法用來比較兩個受訓者的身高。 1) 如果比較者比anthor物件高,回傳大于0的值; 2) 如果比較者比anthor物件矮,回傳小于0的值; 3) 如果比較者與anthor物件一樣高,回傳結果為0。 1-4. 創建軍訓成員分組業務類: 1-4.1. 限制1. 在cn.campsg.java.experiment.entity包中創建分組業務類:TraineesGroups。 1-4.2. 為TraineesGroups類創建屬性,要求如下:序號屬性權限屬性名稱屬性型別屬性說明1privatetrnListList<Trainee>表示受訓學生串列2privategroupsMap<String,List<Trainee>>表示受訓學生分組集合說明:以上屬性無需實作對應的setter/getter方法。 1-4.3. 為TraineesGroups類創建受訓者初始化方法,要求如下:訪問權限方法名稱回傳值方法引數引數說明publicinitTraineesVoidList<Trainee> trnList表示待分組的受訓者方法說明本方法實作對需要進行分組的受訓學生串列的初始化。 本方法的業務邏輯實作及說明如下: 1) 該方法完成對屬性trnList的初始化,引數trnList不能為空; 2) 實際應用中,在創建TraineesGroups物件后必須首先呼叫此方法。 1-4.4. 為TraineesGroups類創建按性別分組的方法,要求如下:訪問權限方法名稱回傳值方法引數回傳值說明publicgroupTraineesMap<String, List<Trainee>>無無方法說明本方法對初始化的受訓者,實作按性別分組。性別包括male和female兩種。 本方法的業務邏輯實作和相關說明為: 1) 如果受訓者學生串列為慷訓沒有成員,不予后續處理; 2) 按照性別創建對應的軍訓分組集合; 3) 把學生按性別分別分配到對應的分組集合中; 4) 完成對不同分組中的受訓者的身高排序。 1-5. 顯示模擬軍訓分組結果: 1-5.1. 限制1. 在cn.campsg.java.experiment包中創建主類:MainClass; 1-5.2. 為MainClass創建入口主方法:main; 1-5.3. 在main中,創建1個分組物件; 1-5.4. 在main中,創建一個包含10個受訓學生的集合; 1-5.5. 在main中,應用分組物件完成對受訓集合的初始化; 1-5.6. 在main中,應用分組物件進行分組并獲取分組結果; 1-5.7. 在main中,在控制臺輸出每組受訓者的資訊。2、實作思路 2-1. 創建工程并配置環境。 2-2. 創建受訓者物體類: 2-2.1. 在cn.campsg.java.experiment.entity 包中創建獎項類:Trainee; 1)該類實作了java的比較介面:Comparable。 2-2.2. 為Trainee類定義屬性: 1) 受訓者姓名: private String name; 2) 受訓者性別: private String sex; 3) 受訓者身高:private float height; 4) 為以上屬性實作對應的setter/getter方法 2-2.3. 為Trainee類創建默認的0參構造器。 2-2.4. 為Trainee類實作介面方法,其形式如下: +提示 public int compareTo(Trainee anthor) { } 本方法實作對受訓者身高進行比較,業務邏輯實作如下: 1) 在方法內實作自身與anthor物件比較; 2) 分別獲取自身的身高和anthor的身高; 3) 利用Float的比較方法compare比較身高:Float.compare(自身身高,anthor身高) ; 4) 回傳比較結果。 2-3. 創建軍訓成員分組業務類: 2-3.1. 在cn.campsg.java.experiment.entity包中創建分組業務類TraineesGroups; 2-3.2. 為TraineesGroups類創建私有屬性: 1) 受訓學生串列:List<Trainee> trnList = null; 2) 分組后的分組集合:Map<String, List<Trainee>> groups = null; 2-3.3. 為TraineesGroups類創建1參的初始化方法,其形式如下: +提示 public void initTrainees(List<Trainee> trnList) { } 1) 在方法內完成對受訓學生串列屬性的賦值:this.trnList = trnList; 2-3.4. 為TraineesGroups類創建分組方法groupTrainees,其形式如下: +提示 public Map<String, List<Trainee>> groupTrainees() { } 1) 判斷trnList是否為慷訓是否有成員,如為慷訓無成員直接回傳空值; 2) 創建分組物件并為分組集合屬性賦值:groups = new HashMap<String, List<Trainee>>() 3) 創建male和female兩類List型別佇列,并加入到groups集合; +提示 groups.put("male", new ArrayList<Trainee>()); groups.put("female", new ArrayList<Trainee>()); 4) 通過回圈來遍歷trnList的成員物件: 其一,獲取成員物件:Trainee trainee = trnList.get(i) 其二,判斷物件的性別屬性: 若成員物件的性別為male則把其加入到male佇列中; 若成員物件的性別為female則把其加入到female佇列中。 5) 利用集合工具Collections 類的sort方法對分組佇列排序:Collections.sort(groups.get(性別)); 6) 回傳分組物件 groups。 2-4. 顯示模擬軍訓分組結果: 2-4.1. 在包cn.campsg.java.experiment中創建業務主類:MainClass; 2-4.2. 在MainClass中定義程式入口主方法:main 2-4.3. 在main方法中,創建1個分組物件: 1)TraineesGroups tg = new TraineesGroups(); 2-4.4. 在main方法中,創建一個包含10個不同受訓者的學生集合; 1) 創建一個只包含Trainee型別物件的集合; 2) 通過回圈的方式創建10個不同受訓者加入集合。 2-4.5. 在main方法中,呼叫tg的initTrainees方法完成分組初始化。 2-4.6. 定義分組變數并呼叫tg的groupTrainees方法對其賦值:Map<String, List<Trainee>> group = tg.groupTrainees(); 2-4.7. 按性別取出group中的分組佇列,并把佇列成員資訊輸出到控制臺。3、驗證與測驗 3-1. 在工程中定位主類:MainClass 3-2. 右鍵點擊MainClass類,依次選擇:Run As->Java Application。 3-3. 運行程式,查看輸出結果是否符合預期。
uj5u.com熱心網友回復:
package cn.campsg.java.experiment.entity;
public class Trainee implements Comparable<Trainee> {
String name;
String sex;
float height;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public float getHeight() {
return height;
}
public void setHeight(float height) {
this.height = height;
}
public Trainee() {}
@Override
public int compareTo(Trainee anthor) {
int result=-1;
result=Float.compare(this.getHeight(),anthor.getHeight());
return result;
}
}
package cn.campsg.java.experiment.entity;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TraineesGroups{
private List<Trainee>trnList=null;
private Map<String,List<Trainee>>groups=null;
/**
*
*
*@param trnList
*
*/
public void initTrainees(List<Trainee>trnList) {
this.trnList=trnList;
}
/**
*
*
*@return分組結果
*
*/
public Map<String,List<Trainee>>groupTrainees(){
if(trnList==null||trnList.size()==0)
return null;
groups=new HashMap<String,List<Trainee>>();
groups.put("male", new ArrayList<Trainee>());
groups.put("female", new ArrayList<Trainee>());
for(int i=0;i<trnList.size();i++) {
Trainee trainee=trnList.get(i);
if("male".equals (trainee.getSex()))
groups.get("male").add(trainee);
else
groups.get("female").add(trainee);
}
Collections.sort(groups.get("male"));
Collections.sort(groups.get("female"));
return groups;
}
}
package cn.campsg.java.experiment;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import cn.campsg.java.experiment.entity.Trainee;
import cn.campsg.java.experiment.entity.TraineesGroups;
public class MainClass{
public MainClass() {}
public static void main(String[]args) {
List<Trainee>tlist=new ArrayList<Trainee>();
for(int i=0;i<10;i++) {
Trainee t=new Trainee();
t.setName("學生-"+i);
t.setSex(i%3==0?"female":"male");
t.setHeight((float)(Math.random()*51)+150);
tlist.add(t);
}
TraineesGroups tg=new TraineesGroups();
tg.initTrainees(tlist);
Map<String,List<Trainee>>group=tg.groupTrainees();
List<Trainee>mList=group.get("male");
for(int i=0;i<mList.size();i++) {
Trainee trainee=mList.get(i);
System.out.println("姓名:"+trainee.getName()+";身高:"+trainee.getHeight()+";性別:"+trainee.getSex());
}
System.out.println("========================");
List<Trainee>fList=group.get("female");
for(int i=0;i<fList.size();i++) {
Trainee trainee=fList.get(i);
System.out.println("姓名:"+trainee.getName()+";身高:"+trainee.getHeight()+";性別:"+trainee.getSex());
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/83522.html
標籤:Java相關
