Реализуйте функцию SQL GROUP BY в Java с помощью Comparator, компаратор сравнит данные вашего столбца и отсортирует их. В основном, если вы храните отсортированные данные, которые выглядят как сгруппированные, например, если у вас одинаковые повторяющиеся данные столбца, тогда механизм сортировки сортирует их, сохраняя одни и те же данные с одной стороны, а затем ищет другие данные, которые являются несходными данными. Это косвенно рассматривается как группировка одних и тех же данных.
public class GroupByFeatureInJava {
public static void main(String[] args) {
ProductBean p1 = new ProductBean("P1", 20, new Date());
ProductBean p2 = new ProductBean("P1", 30, new Date());
ProductBean p3 = new ProductBean("P2", 20, new Date());
ProductBean p4 = new ProductBean("P1", 20, new Date());
ProductBean p5 = new ProductBean("P3", 60, new Date());
ProductBean p6 = new ProductBean("P1", 20, new Date());
List<ProductBean> list = new ArrayList<ProductBean>();
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
list.add(p5);
list.add(p6);
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
ProductBean bean = (ProductBean) iterator.next();
System.out.println(bean);
}
System.out.println("******** AFTER GROUP BY PRODUCT_ID ******");
Collections.sort(list, new ProductBean().new CompareByProductID());
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
ProductBean bean = (ProductBean) iterator.next();
System.out.println(bean);
}
System.out.println("******** AFTER GROUP BY PRICE ******");
Collections.sort(list, new ProductBean().new CompareByProductPrice());
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
ProductBean bean = (ProductBean) iterator.next();
System.out.println(bean);
}
}
}
class ProductBean {
String productId;
int price;
Date date;
@Override
public String toString() {
return "ProductBean [" + productId + " " + price + " " + date + "]";
}
ProductBean() {
}
ProductBean(String productId, int price, Date date) {
this.productId = productId;
this.price = price;
this.date = date;
}
class CompareByProductID implements Comparator<ProductBean> {
public int compare(ProductBean p1, ProductBean p2) {
if (p1.productId.compareTo(p2.productId) > 0) {
return 1;
}
if (p1.productId.compareTo(p2.productId) < 0) {
return -1;
}
return 0;
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
}
class CompareByProductPrice implements Comparator<ProductBean> {
@Override
public int compare(ProductBean p1, ProductBean p2) {
if (p1.price > p2.price) {
return 1;
}
if (p1.price < p2.price) {
return -1;
}
return 0;
}
public boolean equals(Object obj) {
return super.equals(obj);
}
}
class CompareByCreateDate implements Comparator<ProductBean> {
@Override
public int compare(ProductBean p1, ProductBean p2) {
if (p1.date.after(p2.date)) {
return 1;
}
if (p1.date.before(p2.date)) {
return -1;
}
return 0;
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
}
}
Здесь вывод для приведенного выше списка ProductBean выполняется по критериям GROUP BY, здесь, если вы видите входные данные, которые заданы списком ProductBean для Collections.sort (список, объект Comparator для требуемого столбца). Это будет сортироваться на основе вашей реализации компаратора и вы сможете увидеть сгруппированные данные в выводе ниже. Надеюсь это поможет...
******** ПЕРЕД ГРУППИРОВКОЙ ВХОДНЫЕ ДАННЫЕ СМОТРИТ ТАК ******
ProductBean [P1 20, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P1, 30, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P2, 20, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P1 20, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P3 60, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P1 20, понедельник, 17 ноября, 09:31:01 IST 2014]
******** ПОСЛЕ ГРУППЫ ПО ИДЕНТИФИКАТОРУ ПРОДУКТА ******
ProductBean [P1 20, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P1, 30, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P1 20, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P1 20, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P2, 20, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P3 60, понедельник, 17 ноября, 09:31:01 IST 2014]
******** ПОСЛЕ ГРУППЫ ПО ЦЕНЕ ******
ProductBean [P1 20, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P1 20, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P2, 20, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P1 20, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P1, 30, понедельник, 17 ноября, 09:31:01 IST 2014]
ProductBean [P3 60, понедельник, 17 ноября, 09:31:01 IST 2014]