Java雞毛蒜皮

把數組封裝到Set集合

現有兩個數組以下,須要分別將其中的元素封裝到一個Set中.html

String[] stringArray = new String[]{"1","2","3","4","5","6","7"};
int[] intArray = new int[]{1, 2, 3, 4, 5, 6, 7};java

對於stringArray, 可以使用以下方法:api

Set<String> stringSet = new HashSet<>(Arrays.asList(stringArray));
//或者
Set<T> stringSet = new HashSet<T>();
Collections.addAll(stringSet, stringArray);

但對於intArray這種基本類型數組, 由於存在類型轉換問題, 上面的方法會失效. 轉出來的結果就是一個Set<int[]>集合. 爲了正確的處理基本類型數組, 在JDK1.8之前須要寫一個循環來處理.數組

Set<Integer> intSet = new HashSet<>();
for (int i : intArray) {
    intSet.add(i);
}

在JDK1.8, 引入了流處理. 代碼就變成了這樣:oracle

Set<String> stringSet = Arrays.stream(stringArray).collect(Collectors.toSet());
Set<Integer> intSet = Arrays.stream(intArray).boxed().collect(Collectors.toSet());

注意 在處理intArray時, 調用了boxed方法來包裝基本類型的元素.app

byte數組轉換成16進制字符串

byte[] bytes = {-1, 0, 1, 2, 3 };
    StringBuilder sb = new StringBuilder();
    for (byte b : bytes) {
        sb.append(String.format("%02X ", b));
    }
    System.out.println(sb.toString());
    // prints "FF 00 01 02 03 "

java.util.Formatter 語法ui

  • %[flags][width]conversion
    • Flag '0' - The result will be zero-padded
    • Width 2
    • Conversion 'X' - The result is formatted as a hexadecimal integer, uppercase

參考:Java code To convert byte to Hexadecimal
怎麼用Integer.toHexString(int)獲得byte類型的十六進制字符串形式?.net

相關文章
相關標籤/搜索