題目如下:
JAVA程式設計實現如下需求:
2018年05期培訓班組織技術學習與分享,有如下技術可供選擇:
VirtualBox
Vagrant
WebSocket
JSONP
Redis
MongoDB
Cassandra
RabbitMQ
ActiveMQ
Kafka
Lucene
Solr
ElasticSearch
Hadoop
HDFS
HIVE
PIG
Mahout
HBase
Spark
Guava
Protobuf
Avro
Thrift
Motan
Docker
DynamoDB
Scala
Groovy
SpringBoot
學員每人選擇其中兩項進行學習,並在學習會以Demo的形式分享給其他同事。學員們的意向如下:
呂鵬飛 ElasticSearch Redis
丁虎 Redis SpringBoot
樑秀鬥 Hadoop HDFS
李文鵬 Docker Kafka
苗桓飛 Lucene Solr
佘昊 Solr Redis
杜世陽 ActiveMQ Hadoop
劉翩 SpringBoot ActiveMQ
史建智 Docker Lucene
王帥 Cassandra Spark
張昌昌 SpringBoot MongoDB
王騰飛 SpringBoot Spark
楊小平 WebSocket RabbitMQ
請編寫程式為學員安排最終的技術學習清單,要求:
* 如果一項技術只有一個學員選擇,則直接為該學員指定該技術
* 如果一項技術有多個學員選擇,則在選擇了該項技術的學員中隨機指定一位學習該技術
* 如果一個學員被指定的技術不足兩項,則在未被指定的技術中隨機指定一項或兩項給該學員,以湊足兩項但不能多於兩項。
* 每個學員被指定的技術不能重複
* 需要輸出最終的技術指定清單
* 需要輸出未被指定給學員的技術清單
我的思路及程式碼:
package com.zy.zhy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import org.junit.Test;
public class First {
//所有技術
private static List<String> courceList = new ArrayList<String>();
static{
courceList.add("VirtualBox");courceList.add("Vagrant");
courceList.add("WebSocket");courceList.add("JSONP");
courceList.add("Redis");courceList.add("MongoDB");
courceList.add("Cassandra");courceList.add("RabbitMQ");
courceList.add("ActiveMQ");courceList.add("Kafka");
courceList.add("Solr");courceList.add("ElasticSearch");
courceList.add("Hadoop");courceList.add("HDFS");
courceList.add("HIVE");courceList.add("PIG");
courceList.add("Mahout");courceList.add("HBase");
courceList.add("Spark");courceList.add("Guava");
courceList.add("Protobuf");courceList.add("Avro");
courceList.add("Thrift");courceList.add