4つのファイルで構成されています。
Main
public class Main {
public static void main(String[] args) {
// ユーザーの作成
User user1 = new User();
user1.setId("1");
user1.setName("Taro");
user1.setAge(25);
User user2 = new User();
user2.setId("2");
user2.setName("Hanako");
user2.setAge(24);
User user3 = new User();
user3.setId("3");
user3.setName("Jiro");
user3.setAge(27);
// マッチングサービスの初期化
MatchingService matchingService = new MatchingService();
matchingService.addUser(user1);
matchingService.addUser(user2);
matchingService.addUser(user3); // user3をマッチングサービスに追加
// マッチングのテスト
System.out.println("User1's matches:");
for (User matchedUser : matchingService.findMatches(user1)) {
System.out.println(matchedUser.getName());
}
// マッチングのテスト for user3
System.out.println("User3's matches:");
for (User matchedUser : matchingService.findMatches(user3)) {
System.out.println(matchedUser.getName());
}
// メッセージサービスの初期化
MessageService messageService = new MessageService();
// user1からuser2へメッセージを送信
messageService.sendMessage(user1.getId(), user2.getId(), "Hello, Hanako!");
// user3からマッチングしたユーザーへメッセージを送信(ここでは例としてuser1がマッチングしたと仮定)
messageService.sendMessage(user3.getId(), user1.getId(), "Hello, Taro!");
// メッセージの表示 for Hanako
System.out.println("Messages for Hanako:");
for (String message : messageService.getMessages(user2.getId())) {
System.out.println(message);
}
// メッセージの表示 for Taro
System.out.println("Messages for Taro:");
for (String message : messageService.getMessages(user1.getId())) {
System.out.println(message);
}
}
}
これが1つ目、Mainファイルです。次が二つ目MatchingServiceファイルです。
MatchingService
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
public class MatchingService {
private List<User> users;
public MatchingService() {
this.users = new ArrayList<>();
}
public void addUser(User user) {
users.add(user);
}
public List<User> findMatches(User currentUser) {
List<User> potentialMatches = new ArrayList<>(users); // 全ユーザーのコピーを作成
Collections.shuffle(potentialMatches); // リストをランダムにシャッフル
potentialMatches.removeIf(user -> user.getId().equals(currentUser.getId())); // 自分自身を除外
// ここで、必要に応じてマッチングロジックをさらに調整できます
return potentialMatches;
}
}
3つ目がMessageServiceファイルです。
MessageService
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
public class MessageService {
private Map<String, List<String>> messages; // ユーザーIDとメッセージのリスト
public MessageService() {
this.messages = new HashMap<>();
}
public void sendMessage(String senderId, String receiverId, String message) {
messages.computeIfAbsent(receiverId, k -> new ArrayList<>()).add(message);
}
public List<String> getMessages(String userId) {
return messages.getOrDefault(userId, new ArrayList<>());
}
}
そして最後がUserファイルです。
User
// ユーザークラスはそのままで問題ありません。
class User {
private String id;
private String name;
private int age;
// GetterとSetter
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
以上の4つのファイルを拡張子.javaでつくりファイル名とpublic class クラス名を一致させてください。VScodeなどの開発環境であれば、ターミナルを開きます。そしてターミナル上で
javac Main.java MatchingService.java MessageService.java User.java
を実行しコンパイルします。それが終わったら、
java Main
で実行します。