list系列讲解

1、list去重

(1)单个list集合对某个字段去重

for (int i = 0 ;i<successList.size()-1; i++)  {
                for (int j = successList.size()-1; j>i; j--)  {
                    if  (successList.get(j).getName().equals(successList.get(i).getName()))  {
                    	repeatList.add(successList.get(j));
                    }
                }
            }

(2)2个list集合对某个字段去重

for (int i = 0; i < successList.size(); i++) {
					User user = successList.get(i);
					if(!listDb.stream().filter(T -> T.getName().equals(user .getName())).findAny().isPresent()) {
						repeatList.add(user );
					}
				}

(3)使用Set

List<User> newList = new ArrayList<User>();
Set<String> set = new HashSet<String>();
for (User user : list) {
    String userName = user.getName();
    if (!set.contains(userName)) { //set中不包含重复的
        set.add(userName);
        newList.add(user);
    }
}

System.out.println("Set去重后的集合: " + newList);

(4)lambda表达式对两个List根据某个属性去重

第一种 循环去重

public class LambdaDemo {

	public static void main(String[] args) {
		List<Loginfo> list1 = new ArrayList<>();
		Loginfo Loginfo1 = new Loginfo();
		Loginfo1.setId(1);
		Loginfo1.setLoginname("admin1");
		Loginfo Loginfo3 = new Loginfo();
		Loginfo3.setId(3);
		Loginfo3.setLoginname("admin3");
		list1.add(Loginfo1);
		list1.add(Loginfo3);
		
		List<Loginfo> list2 = new ArrayList<>();
		Loginfo Loginfo2 = new Loginfo();
		Loginfo2.setId(2);
		Loginfo2.setLoginname("admin1");
		Loginfo Loginfo4 = new Loginfo();
		Loginfo4.setId(4);
		Loginfo4.setLoginname("admin2");
		list2.add(Loginfo2);
		list2.add(Loginfo4);
		
		//System.out.println(list1);
		//System.out.println(list2);
		
		List<Loginfo> list3 = new ArrayList<>();
		
		for(int i=0;i<list2.size();i++){
			Loginfo Loginfo = list2.get(i);  //注意这里一定要重新声明变量
			if(!list1.stream().filter(T -> T.getLoginname().equals(Loginfo.getLoginname())).findAny().isPresent()){
				list3.add(list2.get(i)); //重复字段数据
				System.out.println(list3);
				list2.remove(i);
				System.out.println(list2);
			}
		}
	}
}

第二种 强烈推荐使用

/**
 * @方法描述:获取两个ArrayList的差集
 * @param firstArrayList 第一个ArrayList
 * @param secondArrayList 第二个ArrayList
 * @return resultList 差集ArrayList
 */
public static List<IncomeInvResponse> receiveDefectList(List<User> firstArrayList,
        List<QywxUser> secondArrayList) {
    List<QywxUser> resultList = firstArrayList.stream()
            .filter(item -> !secondArrayList.stream().map(e -> e.getLoginname() + "|" + e.getUserName())
                    .collect(Collectors.toList()).contains(item.getUserid() + "|" + item.getName()))
            .collect(Collectors.toList());
    return resultList;
}

2、Java List.contains()方法:判断列表中是否包含指定元素

Java 集合类中的 List.contains() 方法用于判断列表中是否包含指定元素。如果列表中包含指定元素,则返回 true,否则返回 false。

语法:contains(Object o)

参数说明:
o:要判断是否存在于列表中的元素。

public static void main(String[] args){
    List<String>list = new ArrayList<String>();
    list.add("aa");  //向列表中添加数据
    list.add("bb");  //向列表中添加数据
    list.add("cc");  //向列表中添加数据
    for(int i=0;i<list.size();i++){  //通过循环输出列表中的内容
    System.out.println(i+":"+list.get(i));
  }
  String o = "dd";
  System.out.println("list对象中是否包含元素"+o+":"+list.contains(o));  //判断字符串中是否包含指定字符串对象
}

3、list分页subSize

int subSize = 10;
            int subCount = jsonRootBeanList.size();
            int subPageTotal = (subCount / subSize) + ((subCount % subSize > 0) ? 1 : 0);
            // 根据页码取数据
            for (int i = 0, len = subPageTotal - 1; i <= len; i++) {
                // 分页计算
                int fromIndex = i * subSize;
                int toIndex = ((i == len) ? subCount : ((i + 1) * subSize));
                List<JsonRootBean> jsonRootBeanList3 = jsonRootBeanList.subList(fromIndex, toIndex);
                System.out.println("jsonRootBeanList3:"+jsonRootBeanList3);
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花乐晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值