前些天参加面试,其中有一道笔试题是:随机分配礼物,并且不可以抽到自己的礼物。面试的时候感觉写的很糟糕,所以后来回家后自己总结了一下。
- 新建Gift类
package com.selenium.demo;
public class Gift {
private String giftNo;//礼物编号
private String person;//人员
private String status ="0";//礼物是否被分配,默认0 未被选中
public Gift(String giftNo, String person) {
this.giftNo = giftNo;
this.person = person;
}
public String getGiftNo() {
return giftNo;
}
public void setGiftNo(String giftNo) {
this.giftNo = giftNo;
}
public String getPerson() {
return person;
}
public void setPerson(String person) {
this.person = person;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
2.测试类
package com.selenium.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class GiftTest {
public static void main(String[] args){
Gift gift1 = new Gift("jack","jack");
Gift gift2 = new Gift("rose","rose");
Gift gift3 = new Gift("jane","jane");
Gift gift4 = new Gift("nick","nick");
Gift gift5 = new Gift("tom","tom");
List<Gift> gifts = new ArrayList();
gifts.add(gift1);
gifts.add(gift2);
gifts.add(gift3);
gifts.add(gift4);
gifts.add(gift5);
chooseGift( gifts);
}
public static String chooseGift( List<Gift> gifts){
List<Gift> assignGifts = new ArrayList<Gift>();//分配之后的礼物数组
for(Gift gift :gifts){
String person = gift.getPerson();
//String giftNo = gift.getGiftNo();
// String status = gift.getStatus();
List<Gift> tempList = new ArrayList<Gift>();//每个人员分配的礼物的时候可供选择的礼物
for(Gift temp :gifts){
if("0".equals(temp.getStatus()) && !person.equals(temp.getPerson())){
tempList.add(temp);
}
}
//随机分配礼物
Random random = new Random();
int n = random.nextInt(tempList.size());
Gift g = tempList.get(n);
g.setStatus("1");//修改礼物是否被选中的状态
Gift gg = new Gift(person,g.getGiftNo());
assignGifts.add(gg);
}
for(Gift t:assignGifts){
System.out.println("----"+t.getPerson()+","+t.getGiftNo()+","+t.getStatus());
}
for(Gift tt:gifts){
System.out.println("----"+tt.getPerson()+","+tt.getGiftNo()+","+ tt.getStatus());
}
return null;
}
}