java字符串切割之后如何对应上id?

例子:

id         dptid(部门id1          1,2,3,4,5


如何变成:
1        1
1        2
1        3
1        4
1        5

//用java切割,怎么实现呢?

自己写切割部分

package com.csdn;

import java.util.ArrayList;
import java.util.List;

public class Solution {
    public static void main(String[] args) {
        List<Dept> deptList = new ArrayList<>();
        Dept dept = new Dept("1", "1,2,3,4,5");
        String[] split = dept.getDeptid().split(",");
        for (String s : split) {
            dept = new Dept(dept.getId(), s);
            deptList.add(dept);
        }
        deptList.forEach(System.out::println);
    }

}

class Dept {
    private String id;
    private String deptid;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getDeptid() {
        return deptid;
    }

    public void setDeptid(String deptid) {
        this.deptid = deptid;
    }

    public Dept(String id, String deptid) {
        super();
        this.id = id;
        this.deptid = deptid;
    }

    @Override
    public String toString() {
        return "Dept [id=" + id + ", deptid=" + deptid + "]";
    }
    

}

img

img
这样 上面的list集合中 存放的对象 就是一一对应了

切割后用

Dictionary<Integer, List<Integer>>

存储,key是id,List是部门id列表,或者是建一个类,属性有id和部门id,用对象列表存储

如下:

public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "1 1,2,3,4,5";
        String[] s = str.split(" "); //先用空格分割
        if(s.length ==2){
            String[] ids = s[1].split(","); //再用‘,’分割
            for(int i = 0;i< ids.length;i++)
                System.out.println(s[0] + "\t" + ids[i]);
        }

    }

其实,他们说的都没错,但也不全对;
你的疑惑不在于如何切割字符串,而是你没有思路去怎么处理好这个事情

这个,是软件开发的思维模式,关于软件开发的思维模式,有这么一个套路
1、拿到事情【任务】的时候,=== 分析问题,
2、解决问题,用什么技术来解决问题 === 技术可行性分析
3、项目实施,==用具体的技术解决具体问题;

回到你具体的问题,把字符串切割,然后按类排序,
这是你在验证【技术可行性】的阶段,你说的技术,楼上的几位实现都可以;

在此,我就不重复了。

如有需要,欢迎来交流。


public class Dept {
    private String id;
    private String deptid;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getDeptid() {
        return deptid;
    }

    public void setDeptid(String deptid) {
        this.deptid = deptid;
    }

    public Dept(String id, String deptid) {
        this.id = id;
        this.deptid = deptid;
    }

    public static void main(String[] args) {
        //从数据库查出来的列表
        List<Dept> list = new ArrayList<>();
        Dept dept = new Dept("1", "1,2,3,4,5");
        Dept dept1 = new Dept("2", "2,3,4,5");
        Dept dept2 = new Dept("3", "3,4,5");
        Dept dept3 = new Dept("4", "4,5");
        list.add(dept);
        list.add(dept1);
        list.add(dept2);
        list.add(dept3);
        //以上是模拟数据

        //分割部门id后的列表
        List<Dept> newList = new ArrayList<>();
        list.forEach(item -> {
            //这里对deptid做分割 得到数组deptidArray
            String[] deptidArray = item.getDeptid().split(",");
            //遍历deptidArray
            for (String deptid : deptidArray) {
                //new Dept
                Dept d = new Dept(item.getId(), deptid);
                //依次放入分割部门id后的列表中
                newList.add(d);
            }
        });
    }

}

主要看main方法实现