Menerapkan Fitur SQL GROUP BY di Java menggunakan Comparator, pembanding akan membandingkan data kolom Anda, dan mengurutkannya. Pada dasarnya jika Anda menyimpan data yang diurutkan yang terlihat seperti data yang dikelompokkan, misalnya jika Anda memiliki data kolom berulang yang sama maka mekanisme pengurutan menyortirnya dengan menyimpan data yang sama di satu sisi dan kemudian mencari data lain yang merupakan data yang berbeda. Ini secara tidak langsung dipandang sebagai PENGELOMPOKAN data yang sama.
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);
}
}
}
Output di sini untuk daftar ProductBean di atas dilakukan dengan kriteria GROUP BY, di sini jika Anda melihat data input yang diberikan daftar ProductBean ke Collections.sort (daftar, objek Pembanding untuk kolom yang diperlukan) Ini akan mengurutkan berdasarkan implementasi komparator Anda dan Anda akan dapat melihat data yang DIKELOMPOKKAN di bawah ini. Semoga ini membantu...
******** SEBELUM MENGELOMPOKKAN DATA MASUKAN TERLIHAT CARA INI ******
ProductBean [P1 20 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P1 30 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P2 20 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P1 20 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P3 60 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P1 20 Sen, 17 Nov 09:31:01 IST 2014]
******** SETELAH GRUP OLEH PRODUCT_ID ******
ProductBean [P1 20 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P1 30 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P1 20 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P1 20 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P2 20 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P3 60 Sen, 17 Nov 09:31:01 IST 2014]
******** SETELAH KELOMPOK BERDASARKAN HARGA ******
ProductBean [P1 20 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P1 20 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P2 20 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P1 20 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P1 30 Sen, 17 Nov 09:31:01 IST 2014]
ProductBean [P3 60 Sen, 17 Nov 09:31:01 IST 2014]