本文最后更新于166 天前,其中的信息可能已经过时,如有错误请发送邮件到3368129372@qq.com
原生方法
- "string.toCharArray()"变数组
- "string".charAt(1)获取某个元素;
- String.format("abcd%s",name);
- int a = Optional.ofNullable(x).orElse(0)不为空则为x,为空则为0;
- new Date().before()(after等也存在)
- Math.pow(A,B)次方
- TeamStatusEnum enumByValue = TeamstatusEnum.getEnumByValue(status)status为value,enumByValue为枚举类的对象。
- Arrays.fill(array,-1)
- "stringBuilder".reverse().toString()可以反转字符串。
- String newStr = new String(charArray);可以把char[]转化为String
- 使用new ArrayList<>(originList);创建list副本,防止list改变带来的影响
- String.join(" ",string)链接;
- Collections.reverse(list)反转数组。
lambda表达式
- 排序(数组)
(省流:前减后为升序,后减前为降序)
以第一个元素为关键字进行升序排序时:
sort(a, (x, y) -> x[0] - y[0]);
结果为 a = {{1,1}, {2,2}, {3,3}, {4,4}, {5,5}}
以第一个元素为关键字进行降序排序时:
sort(a, (x, y) -> y[0] - x[0]);
结果为 a = {{5,5}, {4,4}, {3,3}, {2,2}, {1,1}}
如果要以第二个元素为关键字进行排序是,将x[0]-y[0]变为x[1]-y[1]即可
同样适用于流操作:
(int[][] restaurants)
Arrays.stream(restaurants)
.filter(res -> (res[2]==1||veganFriendly==0)&&res[3]<=maxPrice&&res[4]<maxDistance)
.sorted((x,y)->x[1]==y[1]?y[2]-x[2]:x[1]-y[1])//相同则根据第二个关键词升序,不同则降序
.map(res->res[0])
.collect(Collectors.toList());
工具类方法
BeanUtils(Apache)
<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
BeanUtils.copyProperties(目标对象, 已有的对象);
把属性赋值,记得用try catch包围
动态代理
- jdk动态代理:利用反射,代理类继承proxy、与被代理类实现同样的方法,通过实现invocationHandler实现。
缺点:不能代理普通类(无实现的方法);java为单继承机制,继承了proxy就不能继承其原本的类 - cglib动态代理采用继承的方式,代理类继承被代理类,就能解决上述问题。