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

未定义 String 类型的方法 join (String, List<String>)

未定义 String 类型的方法 join (String, List<String>)

萧十郎 2021-12-10 16:37:48
我正在学习 Java,我遇到了一个关于哈希映射的教程,并开始像我的导师一样输入相同的代码。问题是当我遇到 String.join 方法时,我得到了一个错误而我的导师没有,我不知道为什么。这是错误:The method join(String, List<String>) is undefined for the type String你能告诉我有什么问题吗?private String getZnanjaList(){    List <String> listaZnanja = new ArrayList<>();    for (String znanje : this.znanja.keySet()){        listaZnanja.add(znanje + ": " + this.znanja.get(znanje));    }    return String.join("; ", listaZnanja);}
查看完整描述

3 回答

?
喵喵时光机

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

当您转向String.join()的 javadoc 时,您会发现:


public static String join(CharSequence delimiter,

                          Iterable<? extends CharSequence> elements)

Returns a new String composed of copies of the CharSequence elements joined together with a copy of the specified delimiter.

...

Since:

1.8

这就是全部内容:您必须使用旧版本的 Java。


因此:您应该检查系统上可用的 JDK 版本(分别在调用 javac 时使用,或 IDE 指向的内容),并限制自己使用该版本的内容,或者(推荐)直接跳到 Java 8 ,或 Java 11。


查看完整回答
反对 回复 2021-12-10
?
墨色风雨

TA贡献1853条经验 获得超6个赞

正如其他人提到的,该String功能出现在 Java 8 及以后版本中。


如果您打算坚持使用 Java 7,则可以使用以下解决方案:


private String getZnanjaList(){

    List <String> listaZnanja = new ArrayList<>();

    /*Map<String, String> znanja = new HashMap<>();

    znanja.put("fruit", "apple");

    znanja.put("animal", "dog");

    znanja.put("vehicle", "ford");*/


    for (String znanje : znanja.keySet()){

        listaZnanja.add(znanje + ": " + znanja.get(znanje));

    }


    StringBuilder sb = new StringBuilder();

    for(String s : listaZnanja) {

      sb.append(";").append(s);

    }

    return sb.deleteCharAt(0).toString();

}

在这种方法中,我们利用了StringBuilder类。

您可以在文档中找到更多信息


查看完整回答
反对 回复 2021-12-10
?
四季花海

TA贡献1811条经验 获得超5个赞

错误消息告诉您该类型String没有带有签名的方法join(String, List<String>)。由于String用Java 8确实有方法 String.join(CharSequence, Iterable<CharSequence>),其将匹配(String是一种类型的CharSequence,并List是一种类型的Iterable),这意味着,不使用的Java 8或更新版本。

可能的解决方案:

  1. 将您的 JRE 或 JDK 更新到 Java 8 或更高版本。

  2. 更改一些内容,使您的代码使用机器上已有的 Java 8 或更高版本的 JRE 或 JDK。

  3. 更改代码,使其不依赖于 Java 8 功能。

更新到 Java 8 或更高版本是显而易见的选择。请注意您使用的是 JRE/JDK 而不是不同的。例如,Microsoft 经常将路径设置为指向其 JRE,该 JRE 可能较旧。

从命令提示符,您可以运行

java -version

检查您的版本。

互联网上已经有许多站点可以帮助您将 Java 指向正确的 JDK 或 JRE。例如这个答案。如果您仍然遇到问题,您可能想要发布一个关于您的%PATH%%JAVA_HOME%变量(我假设是 Windows)以及您要使用的 JRE/JDK 的位置的新问题。

如果您只需要更新,搜索“下载 Java 8”应该会让您到达那里。

这个答案解释了如何手动执行此操作。同一问题的其他答案建议有用的图书馆。但实际上,更新为使用 Java 8 可能更好。


查看完整回答
反对 回复 2021-12-10
  • 3 回答
  • 0 关注
  • 739 浏览

添加回答

举报

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