为了账号安全,请及时绑定邮箱和手机立即绑定

将列表拆分为子列表并将它们逐个传递给算法

将列表拆分为子列表并将它们逐个传递给算法

烙印99 2019-04-17 14:15:41
我有一个类型字符串列表,其中包含表单中的多个项目[Cid:0001,Jid:439,java,unit testing][Cid:0001,Jid:439,java,jsp,xml,javascript,servlet,html][Cid:0001,Jid:245,ui development,jquery,javascript,html,ajax][Cid:0002,Jid:312,team,goals,territory]等等由于有很多项目,我需要根据Cid和Jid对项目进行分组。例如,上面的前两行应该是一个组,因为它具有相同的Cid和Jid。我需要将每个组一个接一个地传递给一个采用JavaRDD格式作为输入的算法。每个列表都使用spark中的parallelize函数进行并行化。List<List<String>> mainList = new ArrayList<>();for (Resume r : resumes) {  List<String> subList = new ArrayList<>();  for (String temp : hashSet) {    if (temp.equalsIgnoreCase(r.getJid() + r.getCid())) {       subList.add(r.toString());      mainList.add(subList);
查看完整描述

2 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

这是我的代码片段:

        List<List<String>> mainList = new ArrayList<>();
        List<Resume> resumes = new ArrayList<Resume>();
        Map<String,List<String>> map = new HashMap<String,List<String>>();
        for (Resume r : resumes) {
            List<String> subList = new ArrayList<>();
            subList.add(r.toString());
            if(map.get("JID"+r.getJid()+"CID"+r.getCid())!=null) {
                subList.addAll(map.get("JID"+r.getJid()+"CID"+r.getCid()));
            }
            map.put("JID"+r.getJid()+"CID"+r.getCid(),subList);
            mainList.add(subList);

        }

我曾经 "JID"+r.getJid()+"CID"+r.getCid()考虑过这种情况

JId:212和Cid:456

JId:2124和Cid:56

因为它们不应该组合在一起。添加密钥r.getJid() + r.getCid()无法帮助您考虑这种情况


查看完整回答
反对 回复 2019-05-15
  • 2 回答
  • 0 关注
  • 428 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信