main.java
来自「java的经典例子」· Java 代码 · 共 85 行
JAVA
85 行
/*This example creates byte arrays from two CollationKey objects, then compares them with a byte-comparison method called compareBytes(). The method compareBytes(a.toByteArray(), b.toByteArray()) should always return the same result as a.compareTo(b).*/import java.text.CollationKey;import java.text.Collator;import java.util.Locale;public class Main { public static void main(String[] args) { Locale loc = Locale.FRENCH; // Create an instance of a subclass of collator. Collator myCollator = Collator.getInstance(loc); // Create array of byte arrays from the strings to be sorted. byte[][] byteArrays = new byte[3][]; byteArrays[0] = myCollator.getCollationKey("Tom").toByteArray(); byteArrays[1] = myCollator.getCollationKey("Dick").toByteArray(); byteArrays[2] = myCollator.getCollationKey("Harry").toByteArray(); // Sort keys and print strings. sortArray(byteArrays); // printArray(byteArrays); // "Dick" "Harry" "Tom" } // Sort bytes. public static void sortArray(byte[][] byteArrays) { byte[] tmp; // Sort the byteArrays by comparing two at a time. for (int i = 0; i < byteArrays.length; i++) { for (int j = i + 1; j < byteArrays.length; j++) { // Compare byteArrays if( compareBytes( byteArrays[i], byteArrays[j] ) > 0 ) { //swap byteArrays[i] and byteArrays[j] tmp = byteArrays[i]; byteArrays[i] = byteArrays[j]; byteArrays[j] = tmp; } } } }// NEED TO DETERMINE HOW TO GET THE SOURCE STRING FROM THE BYTEARRAYS// IN OTHER WORDS, ONCE I'VE SORTED THE BYTEARRAYS, HOW DO I PRINTOUT// THE ORIGINAL SOURCE STRINGS IN THAT ORDER?// One possibility is adding either the string or an ID number to the// array of byte arrays. // Print contents of an array static void printArray(byte[][] a) { for (int i = 0; i < a.length; i++) { // if (a[i].getSourceString().length() == 0) { // System.out.println("(empty)" + " "); // } else { for (int j = 0; j < a[i].length; i++) { System.out.println(a[i][j] + " "); } // } } } static int compareBytes(byte[] byteArray1, byte[] byteArray2) { int len = byteArray1.length; // Find the longer of the two arrays if (len > byteArray2.length) len = byteArray2.length; for (int i = 0; i < len; ++i) { if (byteArray1[i] == byteArray2[i]) continue; if (byteArray1[i] < byteArray2[i]) return -1; if (byteArray1[i] > byteArray2[i]) return 1; } if (byteArray1.length < byteArray2.length) return -1; if (byteArray1.length > byteArray2.length) return 1; return 0; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?