Нам всегда приходится работать с объектами, которые собираются в коллекцию.

Пример, есть обычный класс Product

package org.example.pojo;

public class Product {
	
	private String name = "";
	private String price = "";
	private String brand = "";
	
	
	public String getName() {
		return name;
	}
	public Product setName(String name) {
		this.name = name;
		return this;
	}
	public String getPrice() {
		return price;
	}
	public Product setPrice(String price) {
		this.price = price;
		return this;
	}
	public String getBrand() {
		return brand;
	}
	public Product setBrand(String brand) {
		this.brand = brand;
		return this;
	}
	
	
	@Override
	public String toString() {
		return "AllProduct [name=" + name + ", price=" + price + ", brand=" + brand + "]";
	}
}

Мы видим обычный POJO-класс с измененными сеттерами. Плюс этого класса, что здесь приватные поля с геттерами/сеттарами.
Нам необходимо только знать, какие должны быть поля, все остальное IDE генерит сама.

Далее создаем класс ProductCollections для того, чтобы удобно было работать с коллекциями — т.е. для того чтобы собрать объекты
в группу и потом уже работать с этой группой.

package org.example.pojoCollections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

import org.apache.log4j.Logger;
import org.example.pojo.Product;

public class ProductCollections {
	
	private static final Logger log = Logger.getLogger(ProductCollections.class);
	
	public static ArrayList<Product> prod = new ArrayList<>();

	public int size() {
		return prod.size();
	}

	public static ArrayList<Product>  getAllProduct() {
		ArrayList<Product> products = prod;
		if (prod.isEmpty()) {
			Product pr1 = new Product().setName("Икра красная \"Вкуснота \"").setBrand("Белорусская традиция").setPrice("120");
			Product pr2 = new Product().setName("Чай зеленый \"Принцесса Нури\"").setBrand("Ахмад").setPrice("15");		
			Product pr3 = new Product().setName("Чай ароматный с бергамотом.").setBrand("Беседа").setPrice("221");
			Product pr4 = new Product().setName("Lipton Yellow Label").setBrand("Lipton").setPrice("24");
			Product pr5 = new Product().setName("Magic aroma").setBrand("Lipton").setPrice("18");
			Product pr6 = new Product().setName("English Breakfast").setBrand("Lipton").setPrice("12");
			Product pr7 = new Product().setName("Royal Ceylon").setBrand("Lipton").setPrice("14");
		
		
				
			
			products.add(pr1);
			products.add(pr2);
			products.add(pr3);
			products.add(pr4);
			products.add(pr5);
			products.add(pr6);
			products.add(pr7);
		
		}
		return products;
	}

	public void printAll(ArrayList<Product> prod) {
		for (int i = 0; i < size(); i++) {
			log.info(prod.get(i));
		}
	}

	@Override
	public String toString() {
		for (int i = 0; i < size(); i++) {
			log.info(prod.get(i));
		}
		return "";
	}

	public ArrayList<Product> getProd() {
		return prod;
	}

	public void setProd(ArrayList<Product> prod) {
		this.prod = prod;
	}

	public ArrayList<Product> sortByName() {
		Collections.sort(getAllProduct(), sortByName);
		return prod;
	}

	public ArrayList<Product> sortByPrice(ArrayList<Product> prod) {
		Collections.sort(prod, sortByPrice);
		return prod;

	}

	public Product prodWithMaxPrice() {
		return Collections.max(getAllProduct(), sortByPrice );
	}

	public Product prodWithMinPrice() {
		return Collections.min(getAllProduct(), sortByPrice );
	}

	public ArrayList<Product> findByName(String productName) {

		ArrayList<Product> productWithEqualsName = new ArrayList<>();
		for (int i = 0; i < size(); i++) {
			if (prod.get(i).getName().equalsIgnoreCase(productName)) {
				productWithEqualsName.add(getAllProduct().get(i));
			}
		}

		if (productWithEqualsName.isEmpty()) {
			log.info("Didnt find elemets with product name \"" + productName + "\".");
		}
		return productWithEqualsName;
	}

	private  Comparator<Product> sortByName = new Comparator<Product>() {

		@Override
		public int compare(Product p1, Product p2) {
			return p1.getName().compareTo(p2.getName());
		}
	};

	private  Comparator<Product> sortByPrice = new Comparator<Product>() {

		@Override
		public int compare(Product p1, Product p2) {
			return Integer.parseInt(p1.getPrice()) - Integer.parseInt(p2.getPrice());
		}
	};
}


Ну и главный класс для просмотра результатов работы:

package org.example.main;

import org.apache.log4j.Logger;
import org.example.pojoCollections.ProductCollections;

public class MainClass {
	
	private static final Logger log = Logger.getLogger(MainClass.class);
	
	public static void main(String[] args) {
		ProductCollections cP = new ProductCollections();
		log.info("Max price is = " + cP.prodWithMaxPrice().getPrice());
		log.info("Size is " + cP.size());
		log.info("Min price is = " + cP.prodWithMinPrice().getPrice());
		log.info(cP.findByName("Milk 4"));
		log.info(cP.sortByName());		
	}

}


Весь код можно найти на гитхаб —

https://github.com/VictorSem/Product

Реклама