当前位置: 首页 > 知识库问答 >
问题:

在java中发现类型不匹配。util。列表[字符串]:必需列表[字符串]

尉迟宣
2023-03-14

我对斯卡拉很陌生。我已经开始在spark项目中使用scala。我正在使用一些java代码。下面这句话我就错了。

         case class docDisplay( id :String,name :String,  session :String,
  time :String, docguid: scala.collection.immutable.List[String]

)

我的ParseDocumentGuid是java类,其代码如下。

public static List<String> ParseGuid(String Data, String type,String Name) {    
    boolean validJson=checkValidJson(Data);
    if(validJson==true)

    {
        try
        {
            JSONObject  json = null;
         json = new JSONObject (Data);
        List<String> singleDocGuidList= new ArrayList<String>();
        if(json!=null && json.getString("guid").equalsIgnoreCase("guid") )
        {
                    singleDocGuidList.add(json.getString("guid"));
        }
         return singleDocGuidList;
    }    
    catch(Exception e)
       {
           List<String> singleDocGuidList= new ArrayList<String>();
            singleDocGuidList.add(e.getMessage());
            return singleDocGuidList;
       }
    }
 else
    {
        List<String> singleDocGuidList= new ArrayList<String>();
        singleDocGuidList.add("unKnownDocumentGuid");
        return singleDocGuidList;
    }
}

下面是调用上述方法的代码

def selectColumnsPerDocdisplayRows(row:Row):List[String]= {
    docDisplay(
        row.getAs[String]("id"),
        row.getAs[String]("name"),
        row.getAs[String]("session"),
        row.getAs[String]("time"),
    Utils.ParseDocumentGuid(row.getAs("Data"),Utils.DOCDISRELATED,row.getAs[String]("name"))
        );
}

因此,我的def selectColumnsPerDocdisplayRows()方法出错

类型不匹配;发现:java。util。列表[字符串]必填项:列表[字符串]

共有2个答案

司空繁
2023-03-14

添加转换:

import collection.JavaConverters._

并添加。asScala转换

勾海超
2023-03-14

您好,感谢Brian Kent和Chris Shain的建议,我已经从def中删除了列表[String],它与

导入集合。Java转换器_

和. asScala.to列表

 def selectColumnsPerDocdisplayRows(row:Row)= {
docDisplay(
    row.getAs[String]("id"),
    row.getAs[String]("name"),
    row.getAs[String]("session"),
    row.getAs[String]("time"),
Utils.ParseDocumentGuid(row.getAs("Data"),Utils.DOCDISRELATED,row.getAs[String]("name")).asScala.toList
    );

}

 类似资料:
  • 我有一个值为-f.e.:。 我想替换这个字符: ,,,,,,,与那些: <代码>>、<代码>>、<代码>l、<代码>o、<代码>s、<代码>z、<代码>c、<代码>n。 这里我的意思是,如果解析器将找到f.e.:char(在第一个列表中是第二个)应该替换为在第二个列表中处于相同位置/位置的char,在本例中是:。 char应替换为char。 char应替换为char。 在我的例子中,要替换的字符列

  • 我有超过15个字符串列表,每个列表包含几个不同的代码。每个列表包含一种特定类型的代码。我有一个输入代码,必须找出该输入代码属于哪个列表,并根据结果返回一个特定字符串。我用if,else if来做这个。下面是示例代码 每个列表如下所示:公共静态列表codeTypeOneList=新ArrayList(); (其他代码类型的类似列表) 有没有更好的方法来实现这一点?谢谢

  • 本文向大家介绍在Java中将字符列表转换为字符串,包括了在Java中将字符列表转换为字符串的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符列表- 将字符列表转换为字符串- 示例 以下是在Java中将字符列表转换为字符串的程序- 输出结果

  • 问题内容: 如果我有一个字符串列表,例如: 为了摆脱每个字符串中的所有s,我该怎么办?我尝试在for循环中使用或,但是它无法像正常字符串(不在列表中)那样工作。有人有建议吗? 问题答案: 尝试这个:

  • 考虑以下键(under_score)和字段(lowerCamel): 我正在Java中寻找一种有效的方法来检查是否在中,我希望以下返回: 我的代码: 我可以用下划线替换所有小写,但我正在寻找更有效的方法。

  • 问题内容: 我有一个清单 我正在尝试删除其超字符串已经在列表中的字符串。在这种情况下,结果应为: 我已经写了代码: 但它似乎不起作用。我读过,我们无法在列表上进行迭代时将其删除。因此,副本,而这是我的原始列表。 问题答案: l=[‘abc’,’abcdef’,’def’,’defdef’,’polopolo’] print [j for i, j in enumerate(l) if all(j