Triển khai Tính năng NHÓM BẰNG SQL trong Java bằng Bộ so sánh, bộ so sánh sẽ so sánh dữ liệu cột của bạn và sắp xếp nó. Về cơ bản, nếu bạn giữ dữ liệu được sắp xếp giống như dữ liệu được nhóm lại, ví dụ: nếu bạn có cùng một dữ liệu cột lặp đi lặp lại thì cơ chế sắp xếp sẽ sắp xếp chúng giữ cùng một dữ liệu ở một phía và sau đó tìm kiếm dữ liệu khác là dữ liệu không giống nhau. Điều này gián tiếp được xem như NHÓM của cùng một dữ liệu.
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;
}
// at this point all a.b,c,d are equal... so return "equal"
return 0;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
return super.equals(obj);
}
}
class CompareByProductPrice implements Comparator<ProductBean> {
@Override
public int compare(ProductBean p1, ProductBean p2) {
// this mean the first column is tied in thee two rows
if (p1.price > p2.price) {
return 1;
}
if (p1.price < p2.price) {
return -1;
}
return 0;
}
public boolean equals(Object obj) {
// TODO Auto-generated method stub
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) {
// TODO Auto-generated method stub
return super.equals(obj);
}
}
}
Đầu ra ở đây cho danh sách ProductBean ở trên được thực hiện theo tiêu chí GROUP BY, tại đây nếu bạn thấy dữ liệu đầu vào được cung cấp danh sách ProductBean thành Collections.sort (danh sách, đối tượng của Comparator cho cột bắt buộc của bạn). Điều này sẽ sắp xếp dựa trên việc triển khai trình so sánh của bạn và bạn sẽ có thể xem dữ liệu GROUPED ở đầu ra bên dưới. Hi vọng điêu nay co ich...
******** TRƯỚC KHI NHÓM DỮ LIỆU ĐẦU VÀO NHÓM NHÓM CÁCH NÀY ******
ProductBean [P1 20 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]
ProductBean [P1 30 Thứ Hai, ngày 17 tháng 11, 09:31:01 IST 2014]
ProductBean [P2 20 Thứ Hai, ngày 17 tháng 11, 09:31:01 IST 2014]
ProductBean [P1 20 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]
ProductBean [P3 60 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]
ProductBean [P1 20 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]
******** SAU NHÓM BẰNG PRODUCT_ID ******
ProductBean [P1 20 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]
ProductBean [P1 30 Thứ Hai, ngày 17 tháng 11, 09:31:01 IST 2014]
ProductBean [P1 20 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]
ProductBean [P1 20 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]
ProductBean [P2 20 Thứ Hai, ngày 17 tháng 11, 09:31:01 IST 2014]
ProductBean [P3 60 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]
******** NHÓM SAU THEO GIÁ ******
ProductBean [P1 20 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]
ProductBean [P1 20 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]
ProductBean [P2 20 Thứ Hai, ngày 17 tháng 11, 09:31:01 IST 2014]
ProductBean [P1 20 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]
ProductBean [P1 30 Thứ Hai, ngày 17 tháng 11, 09:31:01 IST 2014]
ProductBean [P3 60 Thứ Hai, ngày 17 tháng 11 09:31:01 IST 2014]