VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test
Java cơ bản Các khái niệm Java OOPs

Java Collections

Collections là gì? List Interface trong java ArrayList trong java LinkedList trong java ArrayList vs LinkedList Set Interface trong java HashSet trong java HashSet trong Java hoạt động như thế nào? LinkedHashSet trong java TreeSet trong java Map Interface trong java HashMap trong java HashMap trong Java hoạt động như thế nào? LinkedHashMap trong java TreeMap trong java Hashtable trong java HashMap vs Hashtable EnumSet trong java EnumMap trong java Lớp Collections trong java Sorting trong Collections Comparable trong java Comparator trong java Comparable vs Comparator Lớp Properties trong java ArrayList vs Vector Array vs ArrayList Iterator trong Java
Java AWT Java Swing Java I/O Ví Dụ Java I/O Java JDBC Các tính năng mới trong java Lập Trình Mạng Với Java Các Tính Năng Mới Trong Java Bài Tập Java Có Lời Giải Câu hỏi phỏng vấn java
1 / 3
❮ ❯

Comparator trong java


Comparable trong java
Sự khác nhau giữa Comparable và Comparator

Giao diện Comparator trong java được sử dụng để sắp xếp các đối tượng của lớp do người dùng định nghĩa (user-defined). Giao diện này thuộc về gói java.util và chứa hai phương thức có tên compare(Object obj1,Object obj2) và equals(Object element).


Chúng ta có thể sắp xếp các phần tử của:

  1. Các đối tượng String.
  2. Các đối tượng của lớp Wrapper.
  3. Các đối tượng của lớp do người dùng định nghĩa (User-defined).

Nội dung chính

  • Phương thức compare()
  • Lớp Collections trong java
  • Phương thức của lớp Collections để sắp xếp các phần tử của List
  • Ví dụ về Comparator trong java

Phương thức compare()

public int compare(Object obj1,Object obj2): so sánh đối tượng đầu tiên với đối tượng thứ hai.


Lớp Collections trong java

Lớp Collections trong java cung cấp các phương thức static để sắp xếp các phần tử của collection. Nếu các phần tử collection thuộc kiểu Set hoặc Map, chúng ta có thể sử dụng TreeSet hoặc TreeMap. Nhưng chúng ta không thể sắp xếp các phần tử của List.


Phương thức của lớp Collections để sắp xếp các phần tử của List

public void sort(List list, Comparator c): được sử dụng để sắp xếp các phần tử của List theo cài đặt đối tượng Comparator.

Sorting trong Collections

Ví dụ về Comparator trong java

Tạo đối tượng nặc danh java.util.Comparator để cài đặt phương thức compare(). Bạn cần phải cài đặt tiêu chí để so sánh trong phương thức compare() để so sánh các đối tượng Student với nhau, dưới đây là ví dụ sắp xếp các đối tượng Student tăng dần theo name:

Tạo lớp Student.java

package vn.viettuts.collection;

/**
 * Student class
 * 
 * @author viettuts.vn
 */
class Student {
    private int id;
    private String name;
    private int age;
    private String address;

    public Student() {
    }

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

    // getter & setter
    
    @Override
    public String toString() {
        return "Student@id=" + id + ",name=" + name 
                + ",age=" + age + ",address=" + address;
    }
}

Tạo lớp ComparatorExample.java

Trong ví dụ này chúng ta tạo ra 2 đối tượng nặc danh của lớp Comparator như 2 tiêu chí sắp xếp các đối tượng của lớp Student theo name và age.

package vn.viettuts.collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;


/**
 * ComparatorExample class
 * 
 * @author viettuts.vn
 */
public class ComparatorExample {
    public static void main(String[] args) {
        // create list students
        List<Student> listStudents = new ArrayList<Student>();
        // add students to list
        listStudents.add(new Student(1, "Vinh", 19, "Hanoi"));
        listStudents.add(new Student(2, "Hoa", 24, "Hanoi"));
        listStudents.add(new Student(3, "Phu", 20, "Hanoi"));
        listStudents.add(new Student(4, "Quy", 22, "Hanoi"));
        
        // sort list student by it's name ASC
        System.out.println("sort list student by it's name ASC: ");
        Collections.sort(listStudents, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o1.getName().compareTo(o2.getName());
            }
        });
        // show list students
        for (Student student : listStudents) {
            System.out.println(student.toString());
        }
        
        // sort list student by it's age ASC
        System.out.println("sort list student by it's age ASC: ");
        Collections.sort(listStudents, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o1.getAge() > o2.getAge() ? 1 : -1;
            }
        });
        // show list students
        for (Student student : listStudents) {
            System.out.println(student.toString());
        }
    }
}

Kết quả:

sort list student by it's name ASC: 
Student@id=2,name=Hoa,age=24,address=Hanoi
Student@id=3,name=Phu,age=20,address=Hanoi
Student@id=4,name=Quy,age=22,address=Hanoi
Student@id=1,name=Vinh,age=19,address=Hanoi
sort list student by it's age ASC: 
Student@id=1,name=Vinh,age=19,address=Hanoi
Student@id=3,name=Phu,age=20,address=Hanoi
Student@id=4,name=Quy,age=22,address=Hanoi
Student@id=2,name=Hoa,age=24,address=Hanoii

Comparable trong java
Sự khác nhau giữa Comparable và Comparator

Bài viết liên quan:

  • Comparable trong java
  • Mảng (Array) trong java
  • ArrayList trong java
  • Sự khác nhau giữa Array với ArrayList
  • Sắp xếp các phần tử của List
  • Sự khác nhau giữa ArrayList và Vector
  • HashSet trong java
  • HashMap trong java
  • Sự khác nhau giữa HashMap và Hashtable
  • List câu hỏi phỏng vấn Java Collection

Recent Updates

Xuất dữ liệu ra màn hình console trong JavaCài đặt môi trường JavaJava Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Collection trong C#Bài tập Java - Sắp xếp nhanh (Quick Sort) trong JavaBài tập Java - Sắp xếp chèn (Insertion Sort) trong JavaSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml