java - 为迭代变量重写 toString()

标签 java oop overriding

我希望修改 toString() 方法,以便我的 print 语句返回“一些随机文本”

HashSet<List<Integer>> set = new HashSet<List<Integer>>(){
    @Override
    public String toString(){
        return "some random text";
    }
};

//Code that assigns some values to the set variable 
for(List<Integer>subSequence:set){
    System.out.println(subSequence.toString());
} //Still prints the values in the Lists

如何为集合中的每个列表打印“一些随机文本”?

最佳答案

您覆盖 toString()匿名方法HashSet类。
当您在代码中调用toString()HashSet的元素的方法:List<Integer> .
因此不会使用重写方法。

How can I get "some random text" to print for every List in the set?

您不能使用实际方法 List实现有自己的toString()实现。

您可以创建并使用您自己的List实现能够覆盖 toString但对于如此简单的需求来说,它似乎过于复杂。

如果我是你,我会定义 toString()实现匿名HashSet类来迭代元素,我将显示每个元素的消息:

HashSet<List<Integer>> set = new HashSet<List<Integer>>() {
  @Override
  public String toString() {
    if (size() == 0) {
        return "";
    }

    StringBuilder sb = new StringBuilder();
    Iterator<List<Integer>> it = iterator();
    sb.append('[');
    for (;;) {
        it.next();
        sb.append("some random text");

        if (!it.hasNext()) {
          return sb.append(']').toString();
        }
        sb.append(',').append(' ');
    }
  }
};

关于java - 为迭代变量重写 toString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46017676/

相关文章:

Javascript 从事件处理程序获取对父对象/类的引用

java - 为什么这是 `hashCode()` 的一个很好的实现

java - 如何覆盖子类中的方法?

java - 使用静态 int 数组进行缓存的阶乘

java - 数组索引中的值与另一个数组的索引不对应

java - hibernate 。获取所有行返回 nullPointerException

java - 任务 ':app:mergeDebugResource' 执行失败

oop - IS-A 和 Liskov 替换原则的区别?

python - 如何恰好调用每个父类的构造函数一次?

java - 重写java内部方法