【问题标题】:How to add Strings to a LinkedHashSet?如何将字符串添加到 LinkedHashSet?
【发布时间】:2018-02-18 18:04:11
【问题描述】:
LinkedHashSet lHs = new LinkedHashSet();
lHs.add("Beta");

编译上面的时候(tutorialspoint使用类似的方法),我得到错误:

LinkedHashSet 类型的方法 add(String) 未定义

如果它是通用的(我认为它来自它的类声明):

LinkedHashSet<String> lHs = new LinkedHashSet<String>();
lHs.add("Beta");

然后我得到错误:

LinkedHashSet 类型不是通用的;它不能用参数进行参数化

Java docs 看来,LinkedHashSet 应该与通用版本一起使用,因为它扩展了 HashSet,而 HashSet 与 add() 一起使用。

如何将字符串添加到 LinkedHashSet? 是否需要创建自己的重载 add() 方法来包含字符串?

See whole program here

【问题讨论】:

    标签: java generics hashset linkedhashset


    【解决方案1】:

    查看您的代码:

    class LinkedHashSet {
    
        public static void main(String[] args) {
            //LinkedHashSet<String> lHs = new LinkedHashSet<String>();
            LinkedHashSet lHs = new LinkedHashSet();
    
            lHs.add("Beta");
            lHs.add("Alpha");
            lHs.add("Eta");
            lHs.add("Gamma");
            lHs.add("Epsilon");
            lHs.add("Omega");
    
            System.out.println(lHs);
        }
    }
    

    包含您的代码的类名被命名为LinkedHashSet,它隐藏了java.util.LinkedHashSet。你的类没有add 方法,也没有泛型类型参数。因此出现错误。

    你应该重命名它。您应该使用通用声明(LinkedHashSet&lt;String&gt; lHs = new LinkedHashSet&lt;String&gt;();Set&lt;String&gt; lHs = new LinkedHashSet&lt;&gt;();)。

    【讨论】:

    • 谢谢。我怎么应该使用通用版本?是为了确保类型安全——确保输入了正确的数据类型?
    • @knjk04 是的。你不应该使用原始类型。
    猜你喜欢
    • 1970-01-01
    • 2017-03-09
    • 2023-04-03
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多