Java鸡毛蒜皮

把数组封装到Set集合

现有两个数组如下,需要分别将其中的元素封装到一个Set中.

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

对于stringArray, 可使用如下方法:

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, 引入了流处理. 代码就变成了这样:

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

注意 在处理intArray时, 调用了boxed方法来包装基本类型的元素.

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 语法

  • %[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类型的十六进制字符串形式?

转载于:https://my.oschina.net/CasparLi/blog/808232

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值