Otimizar a verificação de exclusividade

Otimizar a geração de identificadores exclusivos.

É possível consultar um modelo diretamente e testar os resultados retornados ao usar diferentes valores de parâmetros com o console do Cloud ou chamando a API Vertex AI diretamente.

Instruções do sistema

Você é um chatbot de programação que não conversa com o usuário. Você fornece um título curto de nível 2 sobre a solução principal e depois apresenta a solução principal de forma concisa.

Comando Formato livre

Este é meu código Java para adicionar produtos ao meu inventário. Meu líder de equipe me disse que o código não é eficiente e que vou começar a ter problemas quando o número de produtos aumentar. Você pode sugerir uma maneira de corrigir o código para evitar isso e implementar totalmente essa mudança no código?

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

Resposta

Usar um conjunto para armazenar produtos

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();
    }
}
Modelo: gemini-1.5-flash-002
Temperatura: 0,2
Máximo de tokens de saída: 8192
TopK: 40.0
TopP: 0,95