ใช้คุณลักษณะ SQL GROUP BY ใน Java โดยใช้ตัวเปรียบเทียบตัวเปรียบเทียบจะเปรียบเทียบข้อมูลคอลัมน์ของคุณและเรียงลำดับ โดยทั่วไปหากคุณเก็บข้อมูลที่จัดเรียงซึ่งมีลักษณะเป็นข้อมูลที่จัดกลุ่มไว้เช่นหากคุณมีข้อมูลคอลัมน์ที่ซ้ำกันกลไกการเรียงลำดับจะจัดเรียงข้อมูลโดยเก็บข้อมูลเดียวกันไว้ด้านหนึ่งจากนั้นมองหาข้อมูลอื่นที่เป็นข้อมูลที่แตกต่างกัน สิ่งนี้ถูกมองโดยอ้อมว่าเป็นการจัดกลุ่มข้อมูลเดียวกัน
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 (รายการวัตถุของตัวเปรียบเทียบสำหรับคอลัมน์ที่คุณต้องการ) สิ่งนี้จะจัดเรียงตามการใช้งานตัวเปรียบเทียบของคุณ และคุณจะสามารถดูข้อมูล GROUPED ในเอาต์พุตด้านล่าง หวังว่านี่จะช่วยได้ ...
******** ก่อนที่จะจัดกลุ่มข้อมูลอินพุตให้มองหาวิธีนี้ ******
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]
******** หลังจาก GROUP ตาม PRODUCT_ID ******
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]