【问题标题】:Java: How to check if a string is a part of any LinkedList element?Java:如何检查字符串是否是任何 LinkedList 元素的一部分?
【发布时间】:2011-12-11 08:34:41
【问题描述】:

好的,所以我有一个 LinkedList,我有一个字符串。我想检查字符串是否包含在任何 LinkedList 元素中。 例如:

String a = "apple";
String listelement = "a bunch of apples";
LinkedList list = new LinkedList();
list.add(listelement);
if(list.containsany(a){
   System.out.println("Hooray!");
}

将导致打印“万岁!”

显然 list.containsany 不是真正的 LinkedList 方法,我只是将它用于此目的。

那么我该如何模拟我的例子呢?

谢谢

【问题讨论】:

    标签: java string linked-list contain


    【解决方案1】:

    您必须遍历列表,并检查每个节点的值以查看它是否为字符串。如果您可以保证链表的所有成员都应该是字符串,那么使用 Java 的泛型将它们全部强制为字符串可能会有所帮助。

         /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package javaapplication1;
    
    import java.util.LinkedList;
    
    public class JavaApplication1 {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            String a = "apple";
            String listelement = "a bunch of apples";
            LinkedList<String> list = new LinkedList<String>();
            list.add(listelement);
            list.add(new String("boogie"));
            for (String s : list) {
                if (s.contains(a)) {
                    System.out.println("yes," + s + " contains " + a);
                } else {
                    System.out.println("no," + s + " does not contain " + a);
                }
            }
        }
    }
    

    【讨论】:

    • 这太完美了!但是有一个问题,如果 LinkedList 不包含任何元素,“for”语句不会执行“else”。这是我可以解决的问题吗?
    • 当然,只需将它包含在一个 if 语句中,该语句检查列表的大小是否为 0,并在这种情况下打印出适当的内容。 (如果您需要这方面的帮助,Javadocs 是您的朋友)
    【解决方案2】:
    String a = "apple";
        String listelement = "a bunch of apples";
        LinkedList<String> list = new LinkedList<String>();
        list.add(listelement);
        Iterator<String> li = list.iterator();
        while (li.hasNext()) {
            if (li.next().contains(a)) {
                System.out.println("Hooray!");
            } 
        }
    

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 包含节点的完全匹配。不是字符串的部分匹配。
      【解决方案4】:
      String a = "apple";
      String listelement = "a bunch of apples";
      List<String> list = new LinkedList<String>();
      list.add(listelement);
      for(String s : list){
        if(s.contains(a)){
         syso("yes");
        }
      }
      

      应该这样做,为了找到一个节点包含一个特定的字符串,你需要遍历所有的节点。如果你只想要 1 个实例,你可以打破循环。

      您还想使用泛型。看代码。否则您将不得不将节点转换为字符串。

      【讨论】:

      • 如果链表中包含字符串和对象,这是否有效?
      • 这个仅适用于字符串。如果您正在使用对象,则需要强制转换它。而且您不能将对象存储到LinkedList&lt;String&gt;
      • 正确,现在您已将泛型添加到列表的类型中。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2013-10-03
      • 2011-12-23
      • 2022-06-14
      • 2022-01-15
      • 1970-01-01
      相关资源
      最近更新 更多