Sắp xếp các record với kiểu integer, Ví dụ: IntSort

Một phần của tài liệu Lập trình J2ME cho thiết bị di động (Trang 114 - 116)

iêu chí sắp xếp là theo kiểu integer, dữ liệu ta cần lấy nằm cuối cùng trong dãy byte do đó cần phải đọc theo thứ tự, phải đọc kiểu String, boolean rồi mới đến integer:

public int compare(byte[] rec1, byte[] rec2) { int x1, x2;

try {// If either record is larger than our buffer, reallocate int maxsize = Math.max(rec1.length, rec2.length);

if (maxsize > recData.length) recData = new byte[maxsize];

// Read record #1 we must read the String and boolean to get to the integer

strmBytes = new ByteArrayInputStream(rec1); strmDataType = new DataInputStream(strmBytes); strmDataType.readUTF();

strmDataType.readBoolean();

x1 = strmDataType.readInt(); // Here's our data

// Read record #2

strmBytes = new ByteArrayInputStream(rec2); strmDataType = new DataInputStream(strmBytes);

strmDataType.readUTF(); strmDataType.readBoolean(); x2 = strmDataType.readInt(); // Here's our data

if (x1 == x2) // Compare record #1 and #2 return RecordComparator.EQUIVALENT; else if (x1 < x2) return RecordComparator.PRECEDES; else return RecordComparator.FOLLOWS; } catch (Exception e) { return RecordComparator.EQUIVALENT; } }  T

Searching with RecordFilter (1)

 enumerator cung cấp cơ chế lọc (tìm kiếm các record thỏa mãn một điều kiện nào đó). Sử dụng RecordComparator tất cả các record trong RecordStore đều được lưu trong một result set.

Dùng RecordFilter, thỏa điều kiện mới trong enumerator result set.

 class SearchFilter implements RecordFilter { private String searchText = null;

public SearchFilter(String searchText) {

this.searchText = searchText.toLowerCase(); // This is the text to search for }

public boolean matches(byte[] candidate) {

String str = new String(candidate).toLowerCase();

if (searchText != null && str.indexOf(searchText) != -1) // Look for a match return true;

else

return false; } }

 Class RecordFilter được gắn với một enumerator, nó dùng hàm matches() duyệt hết recordstore lấy ra những record cần tìm:

SearchFilter search = new SearchFilter("search text"); // Create a new search filter // Reference the filter when creating the result set

RecordEnumeration re = rs.enumerateRecords(search,null,false);

Searching with RecordFilter (2)

public SimpleSearch() {

Một phần của tài liệu Lập trình J2ME cho thiết bị di động (Trang 114 - 116)

Tải bản đầy đủ (DOCX)

(133 trang)
w