現有兩個數組以下,須要分別將其中的元素封裝到一個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[] 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
參考:Java code To convert byte to Hexadecimal
怎麼用Integer.toHexString(int)獲得byte類型的十六進制字符串形式?.net