// 判包含(单字段)
public void isContains() {
long count = userList.stream().map(User::getUsername).filter(e -> "ls".equals(e)).count();
System.out.println(count > 0);
}
多字段
// 判包含(多字段)
public void isContains2() {
long count = userList.stream().map(e -> e.getUsername() + ',' + e.getPassword()).filter(e -> "zs,,1".equals(e)).count();
System.out.println(count > 0);
}
// 判包含(多字段)
public void isContains3() {
User user = new User();
user.setUsername("zs,");
user.setPassword("1");
boolean b = userIndexOf(user) >= 0;
System.out.println(b);
}
public int userIndexOf(Object o) {
if (o == null) {
for (int i = 0; i < userList.size(); i++)
if (userList.get(i)==null)
return i;
} else {
for (int i = 0; i < userList.size(); i++)
if (userEquals(o, userList.get(i)))
return i;
}
return -1;
}
public boolean userEquals(Object u, Object o) {
if (u == o) return true;
if (o == null || u.getClass() != o.getClass()) return false;
User user2 = (User) o;
User user1 = (User) u;
return new EqualsBuilder()
.append(user1.getUsername(), user2.getUsername())
.append(user1.getPassword(), user2.getPassword())
.isEquals();
}
判重
单字段
// 判重(单字段)
public void isRepeat() {
List collect = userList.stream().map(User::getUsername).collect(Collectors.toList());
Set<?> noRepeatSet = new HashSet<>(collect);
boolean bool = !(collect.size() == noRepeatSet.size());
System.out.println(bool);
}
多字段
// 判重(多字段)
public void isRepeat2() {
List collect = userList.stream().map(e -> e.getUsername() + ',' + e.getPassword()).collect(Collectors.toList());
Set<?> noRepeatSet = new HashSet<>(collect);
boolean bool = !(collect.size() == noRepeatSet.size());
System.out.println(bool);
}
去重
单字段
// 去重1(单字段)
public void distinct1() {
List list = new ArrayList<>(userList.stream()
.collect(Collectors.toMap(User::getUsername, Function.identity(), (oldValue, newValue) -> newValue))
.values());
listToStr(list);
}
// 去重2(单字段)
public void distinct2() {
List list = new ArrayList<>(userList.stream()
.collect(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(User::getUsername)))));
listToStr(list);
}
多字段
// 去重1(多字段)
public void distinct1_2() {
List list = new ArrayList<>(userList.stream()
.collect(Collectors.toMap(e -> e.getUsername() + ',' + e.getPassword(), Function.identity(), (oldValue, newValue) -> newValue))
.values());
listToStr(list);
}
// 去重2(多字段)
public void distinct2_2() {
List list = userList.stream()
.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(e -> e.getUsername() + ',' + e.getPassword()))), ArrayList::new));
listToStr(list);
}
去重
//查重
public static List findRepeat(Collection datas) {
if (datas instanceof Set) {
return new ArrayList<>();
}
HashSet set = new HashSet();
List repeatEles = new ArrayList();
for (T t : datas) {
if (set.contains(t)) {
repeatEles.add(t);
} else {
set.add(t);
}
}
return repeatEles;
}
排序
单字段
// 排序 单字段
public void sort(){
List collect = userList.stream().sorted(
Comparator.comparing(User::getAge)).collect(Collectors.toList());
listToStr(collect);
}
多字段
// 排序 多字段
public void sort2(){
List collect = userList.stream().sorted(
Comparator.comparing(User::getAge).reversed().thenComparing(User::getPassword)).collect(Collectors.toList());
listToStr(collect);
}
封装工具类
ListUtils.java
package com.xzh.demo.util;
import jdk.internal.org.objectweb.asm.tree.analysis.Value;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.poi.ss.formula.functions.T;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.stream.Collectors;
public class ListUtils {
public static final String DESC = "desc";
public static final String ASC = "asc";
public static int indexOf(List list, Object obj, BiFunction<? super T, ? super Object, Boolean> equ) {
if (obj == null) {
for (int i = 0; i < list.size(); i++)
if (list.get(i) == null)
return i;
} else {
for (int i = 0; i < list.size(); i++)
if (equ.apply(list.get(i), obj))
return i;
}
return -1;
}
public static int indexOf(List list, Object obj, String... fieldNames) {
if (obj == null) {
for (int i = 0; i < list.size(); i++)
if (list.get(i) == null)
return i;
} else {
for (int i = 0; i < list.size(); i++)
if (equal(list.get(i), obj, fieldNames))
return i;
}
return -1;
}
/**
* List 转 String, 用于遍历输出
*/
public static String toStr(List<?> list) {
return toStr(list, true);
}
/**
* List 转 String, 用于遍历输出
*/
public static String toStr(List<?> list, boolean print) {
StringBuffer str = new StringBuffer();
for (Object o : list) {
str.append("\n" + o.toString());
}
if (print) {
System.out.println(str.toString());
}
return str.toString();
}
/**
* 判空,只判断元素个数是否为0,不能判断是否为空指针
*/
public static boolean isEmpty(List<?> list) {
return list.isEmpty();
}
/**
* 判空
*/
public static boolean isNullEmpty(List<?> list) {
return list == null || list.isEmpty();
}
/**
* 判非空
*/
public static boolean isNotNullEmpty(List<?> list) {
return !isNullEmpty(list);
}
/**
* 判包含
*
* @param list 集合List
* @param mapper 转换方法
* @param filter 判包含字符串
* @return
*/
public static boolean isContains(List list, Function<? super T, ? super Object> mapper, Object filter) {
if (filter == null) {
return false;
}
long count = list.stream().map(mapper).filter(e -> filter.equals(e)).count();
return count > 0;
}
/**
* 判包含
*
* @param list 集合List
* @param equ equals方法
* @param filter 判包含字符串
* @return
*/
public static boolean isContains(List list, BiFunction<? super T, ? super Object, Boolean> equ, Object filter) {
if (filter == null) {
return false;
}
return indexOf(list, filter, equ) >= 0;
}
/**
* 判包含
*
* @param list 集合List
* @param filter 判包含字符串
* @param fieldNames 判断equals相等的字段名
* @return
*/
public static boolean isContains(List list, Object filter, String... fieldNames) {
if (filter == null) {
return false;
}
return indexOf(list, filter, fieldNames) >= 0;
}
/**
* 判重
*
* @param list 集合List
* @param mapper 转换方法
* @return
*/
public static boolean isRepeat(List list, Function<? super T, ? super Object> mapper) {
List
工具类的使用
indexOf
单字段
public void indexOf1(List list){
User user = new User();
user.setUsername("ww");
int i = ListUtils.indexOf(list, user, (a,b)->{
User t1 = (User) a;
User t2 = (User) b;
return t1.getUsername().equals(t2.getUsername());
});
System.out.println(i);
}
// output: 2
public void indexOf2(List list){
int i = ListUtils.indexOf(list, "ww", (a,b)->{
User t = (User) a;
return t.getUsername().equals(b);
});
System.out.println(i);
}
// output: 2
public void indexOf3(List list){
User user = new User();
user.setUsername("ls");
int i = ListUtils.indexOf(list, user, "username");
System.out.println(i);
}
// output: 1
多字段
public void indexOf1(List list) {
User user = new User();
user.setUsername("ww");
user.setNickname("王五");
int i = ListUtils.indexOf(list, user, (a, b) -> {
User t1 = (User) a;
User t2 = (User) b;
boolean equals = new EqualsBuilder()
.append(t1.getUsername(), t2.getUsername())
.append(t1.getNickname(), t2.getNickname())
.isEquals();
return equals;
});
System.out.println(i);
}
// output: 2
public void indexOf2(List list) {
int i = ListUtils.indexOf(list, "ww;王五", (a, b) -> {
User t = (User) a;
return b.equals(t.getUsername() + ";" + t.getNickname());
});
System.out.println(i);
}
// output: 2
public void indexOf3(List list) {
User user = new User();
user.setUsername("ls");
user.setNickname("李四");
int i = ListUtils.indexOf(list, user, "username", "nickname");
System.out.println(i);
}
// output: 1
判空
public void isEmpty() {
List list1 = null;
List list2 = new ArrayList<>();
boolean b1 = ListUtils.isEmpty(list1); //java.lang.NullPointerException
boolean b2 = ListUtils.isEmpty(list2); //true
System.out.println(b1);
System.out.println(b2);
}
public void isNullEmpty() {
List list1 = null;
List list2 = new ArrayList<>();
boolean b1 = ListUtils.isNullEmpty(list1); //true
boolean b2 = ListUtils.isNullEmpty(list2); //true
System.out.println(b1);
System.out.println(b2);
}
判包含
单字段
public void isContains1(List list) {
User user = new User();
user.setUsername("ww");
boolean bool = ListUtils.isContains(list, (a,b)->{
User t1 = (User) a;
User t2 = (User) b;
return t1.getUsername().equals(t2.getUsername());
},user);
System.out.println(bool);
}
public void isContains3(List list) {
boolean bool = ListUtils.isContains(list, (a,b)->{
User t = (User) a;
String t2 = (String) b;
return t.getUsername().equals(t2);
}, "ww");
System.out.println(bool);
}
public void isContains4(List list) {
User user = new User();
user.setUsername("ww");
boolean bool = ListUtils.isContains(list, user, "username");
System.out.println(bool);
}
多字段
public void isContains1(List list) {
User user = new User();
user.setUsername("ww");
user.setNickname("王五");
boolean bool = ListUtils.isContains(list, (a, b) -> {
User t1 = (User) a;
User t2 = (User) b;
boolean equals = new EqualsBuilder()
.append(t1.getUsername(), t2.getUsername())
.append(t1.getNickname(), t2.getNickname())
.isEquals();
return equals;
}, user);
System.out.println(bool);
}
public void isContains2(List list) {
boolean bool = ListUtils.isContains(list, e -> e.getUsername() + ";" + e.getNickname(), "ww;王五");
System.out.println(bool);
}
public void isContains3(List list) {
boolean bool = ListUtils.isContains(list, (a, b) -> {
User t = (User) a;
String t2 = (String) b;
return t2.equals(t.getUsername() + ";" + t.getNickname());
}, "ww;王五");
System.out.println(bool);
}
public void isContains4(List list) {
User user = new User();
user.setUsername("ww");
user.setNickname("王五");
boolean bool = ListUtils.isContains(list, user, "username", "nickname");
System.out.println(bool);
}
判重
单字段
public void isRepeat1(List list) {
boolean bool = ListUtils.isRepeat(list, (a, b) -> {
User t1 = (User) a;
User t2 = (User) b;
return t1.getUsername().equals(t2.getUsername());
});
System.out.println(bool);
}
public void removeRepeat1(List list) {
List userList1 = ListUtils.removeRepeat(list, (a, b) -> {
User t1 = (User) a;
User t2 = (User) b;
return t1.getUsername().equals(t2.getUsername());
}, true);
List userList2 = ListUtils.removeRepeat(list, (a, b) -> {
User t1 = (User) a;
User t2 = (User) b;
return t1.getUsername().equals(t2.getUsername());
}, false);
ListUtils.toStr(userList1, true);
ListUtils.toStr(userList2, true);
}
public void removeRepeat2(List list) {
List userList1 = ListUtils.removeRepeat(list, User::getUsername, true);
List userList2 = ListUtils.removeRepeat(list, User::getUsername, false);
ListUtils.toStr(userList1, true);
ListUtils.toStr(userList2, true);
}
public void removeRepeat3(List list) {
List userList1 = ListUtils.removeRepeat(list, true,"username");
List userList2 = ListUtils.removeRepeat(list, false,"username");
ListUtils.toStr(userList1, true);
ListUtils.toStr(userList2, true);
}
public void removeRepeat4(List list) {
List userList1 = ListUtils.removeRepeat(list, ";","username");
ListUtils.toStr(userList1, true);
}
多字段
public void removeRepeat1(List list) {
List userList1 = ListUtils.removeRepeat(list, (a, b) -> {
User t1 = (User) a;
User t2 = (User) b;
boolean equals = new EqualsBuilder()
.append(t1.getUsername(), t2.getUsername())
.append(t1.getPassword(), t2.getPassword())
.isEquals();
return equals;
}, true);
List userList2 = ListUtils.removeRepeat(list, (a, b) -> {
User t1 = (User) a;
User t2 = (User) b;
boolean equals = new EqualsBuilder()
.append(t1.getUsername(), t2.getUsername())
.append(t1.getPassword(), t2.getPassword())
.isEquals();
return equals;
}, false);
ListUtils.toStr(userList1, true);
ListUtils.toStr(userList2, true);
}
public void removeRepeat2(List list) {
List userList1 = ListUtils.removeRepeat(list, e -> e.getUsername() + ";" + e.getPassword(), true);
List userList2 = ListUtils.removeRepeat(list, e -> e.getUsername() + ";" + e.getPassword(), false);
ListUtils.toStr(userList1, true);
ListUtils.toStr(userList2, true);
}
public void removeRepeat3(List list) {
List userList1 = ListUtils.removeRepeat(list, true, "username", "password");
List userList2 = ListUtils.removeRepeat(list, false, "username", "password");
ListUtils.toStr(userList1, true);
ListUtils.toStr(userList2, true);
}
public void removeRepeat4(List list) {
List userList1 = ListUtils.removeRepeat(list, ";", "username", "password");
ListUtils.toStr(userList1, true);
}
查重
单字段
public void findRepeat(List list) {
List userList = ListUtils.findRepeat(list, "username");
ListUtils.toStr(userList, true);
}
多字段
public void findRepeat(List list) {
List userList = ListUtils.findRepeat(list, "username", "password");
ListUtils.toStr(userList, true);
}
排序
单字段
public void sort1(List list) {
List userList = ListUtils.sort(list, "id", "desc");
ListUtils.toStr(userList, true);
}
public void sort2(List list) {
List userList = ListUtils.sort(list, "age");
ListUtils.toStr(userList, true);
}
多字段
public void sort(List list) {
List userList = ListUtils.sort(list, new String[]{"age","id"}, new String[]{"asc","desc"});
ListUtils.toStr(userList, true);
}