12/08/2018, 15:59

JAVA 8 Sort Array And GroupBy

1. SORT ARRAY JAVA 8 Đầu tiên, ta tạo Object là student có các thông tin sau : name, age, date. package entity; public class Student { private String name; private int age; private int date; public Student(String name, int age, int date) { super(); this.name = name; this.age = ...

1. SORT ARRAY JAVA 8

  • Đầu tiên, ta tạo Object là student có các thông tin sau : name, age, date.
package entity;

public class Student {

	private String name;
	private int age;
	private int date;

	public Student(String name, int age, int date) {
		super();
		this.name = name;
		this.age = age;
		this.date = date;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getDate() {
		return date;
	}

	public void setDate(int date) {
		this.date = date;
	}

}
  • Sau đó thì tiến hành khởi tạo dữ liệu cho các Object
// khoi tao danh sach student
	private static List<Student> initListStudent() {
		// khoi tao danh sach studen
		List<Student> listStudent = new ArrayList<>();

		// khoi tao student
		listStudent.add(new Student("CHieu", 26, 1992));
		listStudent.add(new Student("Hieu", 25, 1993));
		listStudent.add(new Student("ATam", 30, 1989));
		listStudent.add(new Student("BTam", 27, 1991));
		listStudent.add(new Student("Thanh", 24, 1994));

		return listStudent;
	}
  • Tạo hàm main và tiến hành sort theo họ tên các Object
// main de sap xep mang
	public static void main(String[] args) {
		List<Student> listStudent = initListStudent();

		// Mang truoc khi duoc sap xep
		for (Student student : listStudent) {
			System.out.println(student.getName() + "-" + student.getAge() + "-" + student.getDate());
		}
		
		System.out.println("==================");
		// Tien hanh sap xep theo ho ten
		listStudent.sort((Student student1, Student student2) -> student1.getName().compareTo(student2.getName()));
		
		
		//DANH SACH SAU KHI SAP XEP
		for (Student student : listStudent) {
			System.out.println(student.getName() + "-" + student.getAge() + "-" + student.getDate());
		}
	
	}
  • Và đây là kết quả :
CHieu-26-1992
Hieu-25-1993
ATam-30-1989
BTam-27-1991
Thanh-24-1994
==================
ATam-30-1989
BTam-27-1991
CHieu-26-1992
Hieu-25-1993
Thanh-24-1994
  • Ta có thể tiền hành sort theo tuổi theo tăng dần như sau :
// Tien hanh sap xep theo tuoi
		listStudent.sort((Student student1, Student student2) -> student1.getAge() - student2.getAge());
  • Và đây là kết quả :
CHieu-26-1992
Hieu-25-1993
ATam-30-1989
BTam-27-1991
Thanh-24-1994
==================
Thanh-24-1994
Hieu-25-1993
CHieu-26-1992
BTam-27-1991
ATam-30-1989

2. GROUPBY JAVA 8

  • Dùng groupby để nhóm các phẩn tử giống nhau và đếm sự xuất hiện của nó
  • List String .Khởi tạo list String
List<String> listString = Arrays.asList("Cam", "Quyt", "Buoi", "Nho", "Nhan", "Cam", "Nhan", "Quyt");

.Sau đó tiền hành sort và đếm

Map<String, Long> map = listString.stream()
				.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

.Kết Quả :

{Nhan=2, Buoi=1, Nho=1, Quyt=2, Cam=2}

-Với Object : .Khởi tạo 1 object

List<Student> listStudent = Arrays.asList(
			new Student("Son", 41, 1992),
			new Student("Tam", 12, 1993),
			new Student("Hieu", 51, 1993),
			new Student("An", 61, 1993),
			new Student("Son", 12, 1993),
			new Student("Son", 89, 1993),
			new Student("Hieu", 32, 1993),
			new Student("Dao", 12, 1993));

.Tiến hành sort

Map<String, Long> map1 = listStudent.stream()
				.collect(Collectors.groupingBy(Student :: getName, Collectors.counting()));	

.Kết Quả :

{Tam=1, Dao=1, Hieu=2, Son=3, An=1}
0