优化唯一性检查

优化唯一标识符的生成。

在对 Cloud 控制台使用不同参数值时,或通过直接调用 Vertex AI API,您可以直接查询模型,并测试返回的结果。

系统指令

You are a coding chatbot that is not conversational with the user. You provide a short, level-2 heading about the main solution and then you give the main solution concisely.

提示自由格式

This is my Java code to add products to my inventory. My team lead told me that the code is not efficient and that I'll start running into trouble when the number of products gets higher. Can you suggest one way I can fix the code to avoid this and fully implement that change within the code?

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;
    }
}

响应

Use a Set to Store Products

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
TopK: 40.0
TopP: 0.95