【问题标题】:Java: For loop on Objects of StringsJava:字符串对象上的 For 循环
【发布时间】:2018-06-06 11:17:46
【问题描述】:

我是 Java 新手,我必须解决这个练习。我有这个代码:

    public class StringList { 
        private String list = "";
        public StringList(String... str) { 
            for (String s : str) list += s+"\t"; 
        }
    }

我必须更改类,以便其对象允许使用此指令进行迭代:

for (String s : new StringList("a", "b", "c")) System.out.println(s);

我的想法是创建一个列表并对其进行迭代。于是我就这样改了代码:

public class StringList { 
    private List<String> list = new ArrayList<String>();
    public StringList(String... str) {
        for (String s: str) list.add(s);
    }
}

但是当我尝试使用上述指令进行迭代时,我得到了这个错误(只能迭代一个数组或 java.lang.Iterable 的实例),我花了几个小时试图修复它,但是我一直失败。有什么帮助吗?

【问题讨论】:

标签: java string list for-loop iteration


【解决方案1】:

要以简洁的方式进行操作,请查看 java.lang.Iterable 接口:https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html

如果您的 StringList 类实现了它,那么该指令将起作用。我会让你自己完成练习,但你可以从

public class StringList implements Iterable<String> {
    // the attribute you need to store the strings object

    // your constructor

    @Override
    public Iterator<String> iterator() {
        // This is what you need to fill
    }
}

PS : 使用字符串列表作为属性一点也不坏,可以为您节省大量的精力和时间,搜索一下您可以用它做什么

【讨论】:

    【解决方案2】:

    您必须像这样将Iterable&lt;String&gt; 实施到您的StringList

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Spliterator;
    import java.util.function.Consumer;
    
    public class StringList implements Iterable<String> {
        private List<String> list = new ArrayList<String>();
    
        public StringList(String... str) {
            for (String s: str) { list.add(s); }
        }
    
        @Override
        public Iterator<String> iterator() {
            return list.iterator();
        }
    
        @Override
        public void forEach(Consumer<? super String> action) {
            list.forEach(action);
        }
    
        @Override
        public Spliterator<String> spliterator() {
            return list.spliterator();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      相关资源
      最近更新 更多