一意性チェックを最適化する

固有識別子の生成を最適化します。

モデルにクエリを直接実行して、返された結果をテストできます。その場合、Cloud コンソールでさまざまなパラメータ値を使用することも、Vertex AI API を直接呼び出すこともできます。

システム指示

あなたは、ユーザーとの対話型ではないコーディング chatbot です。主要な解決策に関する短いレベル 2 の見出しを入力し、次に主要な解決策を簡潔に示します。

自由形式のプロンプト

製品を在庫に追加する Java コードを次のように作成しました。チームリーダーから、このコードが効率的ではなく、製品数が増えると問題が発生するようになると言われました。この問題を回避し、このコードの中で変更を完全に実装できるようにコードを修正する方法をご提案いただけますか?

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class ProductInventory {

    private static final List<Product> products = new ArrayList<>();
    private static final Random random = new Random();

    public static void main(String[] args) {

        addProduct("Product1");
        addProduct("Product2");
        addProduct("Product3");

        System.out.println("All Products:");
        for (Product product : products) {
            System.out.println("Name: " + product.getName() + ", ID: " + product.getId());
        }
    }

    public static void addProduct(String productName) {
        String randomId;
        boolean idIsUnique;
        long startTime;
        long endTime;
        long duration;

        // Record start time
        startTime = System.nanoTime();

        do {
            randomId = getRandomId();
            idIsUnique = true;

            for (Product product : products) {
                if (product.getId().equals(randomId)) {
                    idIsUnique = false;
                    System.out.println("ID " + randomId + " already exists. Generating a new ID.");
                    break;
                }
            }
        } while (!idIsUnique);

        products.add(new Product(productName, randomId));
        System.out.println("Added " + productName + " with ID: " + randomId);

        // Record end time and calculate duration
        endTime = System.nanoTime();
        duration = endTime - startTime;
        System.out.println("Time taken to add " + productName + ": " + duration + " nanoseconds");
    }

    public static String getRandomId() {
        return "ID" + random.nextInt(1000);
    }
}

// Product class to store product name and ID
class Product {
    private final String name;
    private final String id;

    public Product(String name, String id) {
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public String getId() {
        return id;
    }
}

レスポンス

セットを使用して製品を保管する

import java.util.HashSet;
import java.util.Random;
import java.util.Set;

public class ProductInventory {

    private static final Set<Product> products = new HashSet<>();
    private static final Random random = new Random();

    public static void main(String[] args) {

        addProduct("Product1");
        addProduct("Product2");
        addProduct("Product3");

        System.out.println("All Products:");
        for (Product product : products) {
            System.out.println("Name: " + product.getName() + ", ID: " + product.getId());
        }
    }

    public static void addProduct(String productName) {
        String randomId;
        long startTime;
        long endTime;
        long duration;

        startTime = System.nanoTime();

        do {
            randomId = getRandomId();
        } while (!products.add(new Product(productName, randomId)));

        System.out.println("Added " + productName + " with ID: " + randomId);

        endTime = System.nanoTime();
        duration = endTime - startTime;
        System.out.println("Time taken to add " + productName + ": " + duration + " nanoseconds");
    }

    public static String getRandomId() {
        return "ID" + random.nextInt(1000);
    }
}

class Product {
    private final String name;
    private final String id;

    public Product(String name, String id) {
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public String getId() {
        return id;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Product product = (Product) obj;
        return id.equals(product.id);
    }

    @Override
    public int hashCode() {
        return id.hashCode();
    }
}
モデル: gemini-1.5-flash-002
温度: 0.2
最大出力トークン: 8192
トップ K 40.0
トップ P 0.95