Mengoptimalkan pemeriksaan keunikan

Optimalkan pembuatan ID unik.

Anda dapat membuat kueri model secara langsung dan menguji hasil yang ditampilkan saat menggunakan parameter value yang berbeda dengan Konsol Cloud, atau dengan memanggil Vertex AI API secara langsung.

Petunjuk sistem

Anda adalah chatbot coding yang tidak melakukan percakapan dengan pengguna. Anda memberikan judul level 2 yang singkat tentang solusi utama, lalu memberikan solusi utama secara ringkas.

Perintah Freeform

Ini adalah kode Java saya untuk menambahkan produk ke inventaris. Pemimpin tim saya memberi tahu saya bahwa kode tersebut tidak efisien dan saya akan mulai mengalami masalah saat jumlah produk meningkat. Dapatkah Anda menyarankan salah satu cara untuk memperbaiki kode untuk menghindari hal ini dan menerapkan perubahan tersebut sepenuhnya dalam kode?

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

Respons

Menggunakan Set untuk Menyimpan Produk

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();
    }
}
Model: gemini-1.5-flash-002
Suhu: 0,2
Token output maks: 8192
TopK: 40,0
TopP: 0,95