Sắp xếp các đối tượng sử dụng phương thức Collection.sort

Lập trình viên thường phải sắp xếp một tập hợp các dữ liệu đầu vào. Java đã có sẵn một tập hợp các API cho việc sắp xếp. Trong java, khi chúng ta muốn so sánh nhiều đối tượng thuộc một class thì class đó cần phải thi hành interface Comparable. Các lớp sẵn có của java như Integer, Date cũng thi hành interface này, dó đó những dối tượng thuộc những lớp trên có thể dễ dàng được sắp xếp dựa vào phương thức Collection.sort. Chúng ta cũng có thể thi hành interfaceComparable để các đối tượng của class đó có thể sắp xếp bằng phương thức Collection.sort

package test;
import java.util.ArrayList;

import java.util.Collections;

import java.util.Iterator;

import java.util.List;

public class ListExample {

	List list;

	public ListExample() {

		list = new ArrayList();

	}

	private List getList() {

		return list;

	}

	public static void main ( String [] args ) {

		ListExample lExam = new ListExample();

		List tempList = lExam.getList();

		tempList.add(new Car(2));

		tempList.add(new Car(3));

		tempList.add(new Car(1));

		tempList.add(new Car(6));

		Collections.sort(tempList);

		Iterator iterator = lExam.getList().iterator();

		while (iterator.hasNext()) {

			System.out.println(((Car)iterator.next()).getCapacity());

		}

	}

}
package test;class Car implements Comparable{

	int capacity;public Car(int c){

		this.capacity=c;

	}

	public int compareTo(Object o) {

		int thisVal = this.capacity;

		int anotherVal = ((Car)o).capacity;

		return (thisVal<anotherval (thisval="=anotherVal">
		</anotherval>
	}

	public int getCapacity(){

		return capacity;

	}

}

Output :

	1

	2

	3

	6

(java-tips)

Hiển thị ngày tháng trong java

Lớp java.text.DateFormat rất hữu dụng dùng để hiển thị ngày tháng với những định dạng khác nhau. Ví dụ sau đây sẽ trình bày cho bạn thấy những kiểu hiển thị khác nhau của dữ liệu ngày tháng:

Date now = new Date();
DateFormat df =  DateFormat.getDateInstance();
DateFormat df1 = DateFormat.getDateInstance(DateFormat.SHORT);
DateFormat df2 = DateFormat.getDateInstance(DateFormat.MEDIUM);
DateFormat df3 = DateFormat.getDateInstance(DateFormat.LONG);
DateFormat df4 = DateFormat.getDateInstance(DateFormat.FULL);
String s =  df.format(now);
String s1 = df1.format(now);
String s2 = df2.format(now);
String s3 = df3.format(now);
String s4 = df4.format(now);
System.out.println("(Default) Today is " + s);
System.out.println("(SHORT)   Today is " + s1);
System.out.println("(MEDIUM)  Today is " + s2);
System.out.println("(LONG)    Today is " + s3);
System.out.println("(FULL)    Today is " + s4);

Output:

(Default) Today is 04.06.2008
(SHORT) Today is 04.06.08
(MEDIUM) Today is 04.06.2008
(LONG) Today is 4. June 2008
(FULL) Today is Friday, 6. June2008

Đọc 1 file ảnh trong java

Bạn có thể đọc file ảnh gif, jpeg và png sử dụng phương thức tĩnh của đối tượng Toolkit:

Image i = Toolkit.getDefaultToolkit().getImage("car.png");

Mặc dù vậy, phương thức trên sử dụng kỹ thuật lazy load cho nên nội dung của bức ảnh chỉ được bắt đầu đọc khi bạn muốn hiển thị bức ảnh đó. Để đọc nội dung bức ảnh ngay lập tức bạn có thể sử dụng phương thức khởi tạo của đối tương ImageIcon, khi gọi phương thức này bạn sẽ chờ cho đến khi toàn bộ dữ liệu của bức ảnh được nạp vào bộ nhớ:

Image i = new javax.swing.ImageIcon("car.png").getImage();

Annotation @Override trong java 6

Phiên bản java cung cấp sẵn nhiều annotation, một trong số đó là @Override. @Override được dùng đối với một phương thức để xác định rằng phương thức đó ghi đè (override) một phương thức của lớp cha. Ví dụ như sau:

package com.domian.a.test;

public class OverrideTester {

  public OverrideTester() { }

  @Override
  public String toString() {
    return super.toString() + " [Override Tester Implementation]";
  }

  @Override
  public int hashCode() {
    return toString().hashCode();
  }
}

Trong ví dụ trên, @Override được dùng đối với hai phương thức toString() và hashCode() để cho biết rằng những phương thức đó là phương thức ghi đè lên phương thức của lớp cha java.lang.Object

(Java tips blog)