【问题标题】:Java how to convert String to Iterable<Character>Java如何将String转换为Iterable<Character>
【发布时间】:2021-08-24 09:28:17
【问题描述】:

我有一个存储字符串类型数据的类,可以根据字符串的长度( compareTo() )进行比较,通过字符迭代( iterator() )。

我已经实现了compareTo方法,但是我不知道如何实现iterator()

public class ExtendedString implements Comparable<ExtendedString>,Iterable<Character>{
    private String str;

    public ExtendedString(String str) {
        this.str = str;
    }

    public int compareTo(ExtendedString estr) {...}

    public Iterator<Character> iterator() {
        ???
    }
}

我的问题是我应该如何实现iterator()

【问题讨论】:

  • 您确定要Iterable&lt;ExtendedString&gt; 而不是Iterable&lt;Character&gt;

标签: java iterator comparable iterable compareto


【解决方案1】:
  1. 要将String转换为Character[],我们可以关注this answer
  2. 使用Arrays#stream方法将Character[]转换为Stream&lt;Character&gt;,然后使用BaseStream#iterator
@Override
public Iterator<Character> iterator() {
    return Arrays.stream(str.chars().mapToObj(c -> (char) c).toArray(Character[]::new)).iterator();
}

【讨论】:

    猜你喜欢
    • 2010-11-07
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2019-03-15
    • 2018-10-09
    • 2018-07-28
    • 2017-07-26
    相关资源
    最近更新 更多