有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java重写迭代变量的toString()

我希望修改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

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


共 (1) 个答案

  1. # 1 楼答案

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

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

    不能使用实际方法,因为List实现有自己的toString()实现

    您可以创建并使用自己的List实现来覆盖toString,但对于这样一个简单的需求来说,这似乎太复杂了。

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

    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(' ');
        }
      }
    };