List<Bean>存储集合,怎么根据Bean的某一属性值,递归查找出所有的Bean组成一个新的集合

新手上路,请多包涵

Bean b1=new Bean("1111","test1","数据1");
Bean b2=new Bean("test1","test2","数据2");
Bean b3=new Bean("test2","test3","数据3");
Bean b4=new Bean("test5","test6","数据4");
Bean b5=new Bean("test6","test7","数据5");
Bean b6=new Bean("test3","test4","数据6");
Bean b7=new Bean("test4","test5","数据7");

前一个bean第二个属性,是后一个Bean第一个属性值
怎么将这个List集合 按 b1 b2 b3 b6 b7 b4 b5 组成一个新的集合### 问题描述

阅读 7.1k
2 个回答

如果不会有重复属性值的话,可以用每个 bean 的第二个属性值作 key 放到一个 HashMap 中,然后从 b1 的第二个属性值开始从 Map 里一路读出来。

TreeMap本身是有序的数据结构,默认升序排序,重新转存一次即可实现,但是List<Bean>这样的数据结构本身存储是否合理需要自己在琢磨下,这样强转一次似乎有些太过多余。

package github.banana.demo;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class BeanSort {

    public static void main(String[] args) {
        List<Bean> beans = new ArrayList<>();
        beans.add(new Bean("1111", "test1", "数据1"));
        beans.add(new Bean("test1", "test2", "数据2"));
        beans.add(new Bean("test2", "test3", "数据3"));
        beans.add(new Bean("test5", "test6", "数据4"));
        beans.add(new Bean("test6", "test7", "数据5"));
        beans.add(new Bean("test3", "test4", "数据6"));
        beans.add(new Bean("test4", "test5", "数据7"));

        Map<String, Bean> map = new TreeMap<>();
        for (Bean b : beans) {
            map.put(b.getTwo(), b);
        }

        for (Map.Entry<String, Bean> entry : map.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

@Data
class Bean {
    private String one;
    private String two;
    private String desc;

    Bean(String one, String two, String desc) {
        this.one = one;
        this.two = two;
        this.desc = desc;
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题