Stay organized with collections
Save and categorize content based on your preferences.
Optimize the generation of unique identifiers.
You can query a model directly and test the results returned when using
different parameter values with the Cloud console, or by calling the
Vertex AI API directly.
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;
}
}
Response
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();
}
}
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-10-31 UTC."],[],[]]