LoginSignup
0
0

マッチングアプリ(Java)

Posted at

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

で実行します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0