Category : Java | Sub Category : Java Interview questions | By Prasad Bonam Last updated: 2023-09-12 01:36:17 Viewed : 614
To retain the last viewed items from the cart in Java across different sessions :
To retain the last viewed items from the cart in Java across different sessions or even program executions, you will need a more persistent storage mechanism than the in-memory data structure used in the previous example. Here is a high-level overview of how you can achieve this using file-based storage:
Serialize and Deserialize Data: You can use Java`s Serialization mechanism to convert your cart data to a serialized form and save it to a file. When you want to retrieve the last viewed items, you can deserialize the data from the file.
File I/O: Use Java`s File I/O operations to save and load data to/from a file.
Here is a modified version of the ShoppingCart
class that includes methods for saving and loading the cart data to/from a file to retain the last viewed items:
javaimport java.io.*;
import java.util.ArrayList;
import java.util.List;
public class ShoppingCart {
private List<String> cartItems = new ArrayList<>();
private List<String> lastViewedItems = new ArrayList<>();
private String cartFileName = "cart.ser"; // Name of the file to store cart data
// Constructor to load cart data from file if available
public ShoppingCart() {
loadCartData();
}
// Method to add an item to the cart
public void addItemToCart(String item) {
cartItems.add(item);
saveCartData(); // Save cart data after adding an item
}
// Method to view an item in the cart (which also updates the last viewed items)
public void viewItemInCart(String item) {
if (cartItems.contains(item)) {
lastViewedItems.clear(); // Clear the previous last viewed items
lastViewedItems.add(item); // Add the current item as the last viewed item
}
}
// Method to retrieve the last viewed items
public List<String> getLastViewedItems() {
return lastViewedItems;
}
// Save cart data to a file
private void saveCartData() {
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(cartFileName))) {
oos.writeObject(cartItems);
} catch (IOException e) {
e.printStackTrace();
}
}
// Load cart data from a file
private void loadCartData() {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(cartFileName))) {
List<String> loadedCart = (List<String>) ois.readObject();
cartItems.addAll(loadedCart);
} catch (IOException | ClassNotFoundException e) {
// Handle exceptions if the file does not exist or cannot be read
}
}
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
cart.addItemToCart("Item 1");
cart.addItemToCart("Item 2");
cart.addItemToCart("Item 3");
// Viewing an item will set it as the last viewed item
cart.viewItemInCart("Item 2");
// Retrieve and print the last viewed items
List<String> lastViewedItems = cart.getLastViewedItems();
System.out.println("Last Viewed Items: " + lastViewedItems);
}
}
In this modified example, the loadCartData
method is called in the constructor to load previously saved cart data when a new ShoppingCart
object is created. The saveCartData
method is called after adding an item to the cart to save the updated cart data to the file.
Please note that this example uses Java`s Serialization, and you should be cautious when using it in a production environment. Depending on your requirements, you may consider other serialization formats or databases for a more robust solution.