目录
关于Arrays.asList方法的小小雷区
toCharArray
字符串排序重构技巧
ArrayList的remove中传入整形(int/Integer)
小小的优先级雷区(加减与位运算)
Java8流特性寻找数组最大/最小值
▇ 关于Arrays.asList方法的小小雷区
今天被这句代码卡了好久,按理说给ArrayList的构造函数传入List集合就行了
int[] arr = {1, 2, 3, 4, 5};
List<Integer> remainDays = new ArrayList<>(Arrays.asList(arr));
结果却报错
查了一下原来是因为Arrays.asList方法不能传入基本数据类型
解决方法是先将int[ ] 转化成 Integer[ ]
Integer[] tempArr = Arrays.stream(days).boxed().toArray(Integer[]::new);
List<Integer> remainDays = new ArrayList<>(Arrays.asList(tempArr));
▇ toCharArray
Character[] chars = s.toCharArray(); //(✘)
char[] chars = s.toCharArray(); //(✔)
toCharArray方法返回的类型是char[]
▇ 字符串排序重构
比如将字符串"fate"排序为"aeft"
char[] arr = s.toCharArray();
Arrays.sort(arr);
s = String.valueOf(arr);
▇ ArrayList的remove中传入整形(int/Integer)
int n = 3;
list.remove(n); // 按下标删除
Integer n = 3;
list.remove(n); // 内容删除
源码分析:
E remove(int index); // 重载1
boolean remove(Object o); // 重载2
▇ 小小的优先级雷区
3 + 1 << 2
想当然的认为位运算(<<
,>>
)要比普通加减(+
,-
)要优先,毕竟更高级…
然而,正确的认知应该是:(+
,-
)> (<<
,>>
)
补充:(++
,--
)必然是最高的;其他位运算(^
,&
)更低更低
▇ Java8流特性寻找数组最大/最小值
int[] nums = {1, 9, 2, 8, 3, 7, 4, 6, 5};
int min = Arrays.stream(nums).min().getAsInt();
int max = Arrays.stream(nums).max().getAsInt();
M o r e . . . More... More...