目录
树
public class ThreeNode {
//树编号
private String id;
//树名称
private String name;
//层数
private int level;
//父节点编号
private String pId;
//子节点集合
private List<ThreeNode> children;
public void add(ThreeNode node) {
children.add(node);
}
}
List<ThreeNode> list = new ArrayList<>();
for (ThreeNode tree : trees) {
//层数为1,放进集合中。
if ("1".equals(tree.getLevel())) {
list.add(tree);
}
for (ThreeNode t : trees) {
if (t.getpId().equals(tree.getId())) {
if (tree.getChildren() == null) {
tree.setChildren(new ArrayList<>());
}
tree.add(t);
}
}
}
return list;
集合并集
并集:两个集合内容合并到一起,相同内容去重。
List<String> list = Stream.of(list1,list2).flatMap(Collection::stream).distinct().collect(Collectors.toList());
集合交集
交集:返回两个集合相同的内容
List<String> results = list1.stream().filter(list2::contains).collect(Collectors.toList());
集合去重
List<String> list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("c");
list.add("b");
list.add("a");
// 利用list中的元素创建HashSet集合,此时set中进行了去重操作
HashSet set = new HashSet(list);
// 清空list集合
list.clear();
// 将去重后的元素重新添加到list中
list.addAll(set);
集合排序
List转Map
值是对象
Map<Long, User> maps = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(), (key1, key2) -> key2));
值是属性
有时候,希望得到的map的值不是对象,而是对象的某个属性,那么可以用下面的方式:
Map<Long, String> maps = userList.stream().collect(Collectors.toMap(User::getId, User::getAge, (key1, key2) -> key2));
数组、字符串转换
数组转字符串
String str = "0,1,2,3,4,5";
String[] arr = str.split(",");
字符串转数组
(第一种方式)for遍历
String[] arr = ["0","1","2","3","4","5"];
StringBuffer str = new StringBuffer();
for (String s : arr) {
str.addend(s);
}
(第二种方式)StringUtils
String[] arr = ["0","1","2","3","4","5"];
String str = StringUtils.join(arr); //012345
String str1 = StringUtils.join(arr); //0,1,2,3,4,5
(第三种方式)ArrayUtils
String[] arr = ["0","1","2","3","4","5"];
String str = ArrayUtils.toString(arr,","); //{0,1,2,3,4,5}
数组是否包含内容
String value = "1";
List<String> arrIndex = Arrays.asList("1","2","3","4");
Boolean result = arrIndex.contains(value);
逻辑分页
package test.java.base;
import java.util.List;
public class PageUtil {
/**
*
* @param list 传入数据集合
* @param pageNum 数据起始页
* @param pageSize 数据每页显示条数
* @return
*/
public static List startPage(List list,Integer pageNum,Integer pageSize) {
//非空校验
if (list == null && list.size() == 0) {
return null;
}
// 总数
Integer count = list.size();
// 页数
Integer pageCount = 0;
// 判断是否满足满页展示,不满页+1
if (count % pageSize == 0) {
pageCount = count / pageSize;
} else {
pageCount = count /pageSize + 1;
}
int formIndex = 0; // 开始索引
int toIndex = 0; // 结束索引
if (!pageNum.equals(pageCount)) {
if (pageNum == 0) {
pageNum = 1;
}
formIndex = (pageNum - 1) * pageSize;
toIndex = formIndex + pageSize;
} else {
formIndex = (pageNum - 1) * pageSize;
toIndex = count;
}
// 分页
List pageList = list.subList(fromIndex, toIndex);
return pageList;
}
}
两个对象属性比较差异
//重写equals方法
public boolean equals(Object obj) {
if (!(obj instanceof ClassName1)) {
return Boolean.FALSE;
}
ClassName1 dto = (ClassName1)obj;
if (!StringUtils.equals(dto.属性1,this.属性1)
|| !StringUtils.equals(dto.属性2,this.属性2)
|| !StringUtils.equals(dto.属性3,this.属性3)) {
return Boolean.TRUE;
}
}
金额是否一致
private Boolean maxAmtCompare(BigDecimal newMaxAmt,BigDecimal oldMaxAmt) {
if (newMaxAmt == null && oldMaxAmt == null) {
return Boolean.FALSE;
} else if (newMaxAmt != null && oldMaxAmt == null) {
return Boolean.TRUE;
} else if (oldMaxAmt != null && newMaxAmt == null) {
return Boolean.TRUE;
} else {
return newMaxAmt.compareTo(oldMaxAmt) == 0 ? Boolean.FALSE;
}
}
计算年龄
String birthDate = obj.getBirthDate();
if (StringUtils.isNotEmpty(birthDate)) {
String birDate = birthDate.subString(0,4)//截取年份
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
String nowDate = sdf.format(newDate());
int age = Integer.parseInt(nowDate) - Integer.parseInt(birDate);//今年减去出生年
obj.setAge(age);//赋值最终年龄
}