首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

很好地打印Java集合(toString不会返回漂亮的输出)

很好地打印Java集合(toString不会返回漂亮的输出)是指在Java中,通过使用toString()方法直接打印集合(如ArrayList、HashSet、HashMap等)时,输出的结果可能不够直观和易读。为了更好地打印Java集合,可以使用以下方法:

  1. 使用Java 8的Stream API和Lambda表达式:
代码语言:java
复制
list.stream().forEach(System.out::println);
  1. 使用Apache Commons Lang库中的StringUtils类的join方法:
代码语言:java
复制
String result = StringUtils.join(list.iterator(), ", ");
System.out.println(result);
  1. 使用Guava库中的Joiner类:
代码语言:java
复制
String result = Joiner.on(", ").join(list);
System.out.println(result);
  1. 自定义一个方法来格式化集合的输出:
代码语言:java
复制
public static <T> String formatCollection(Collection<T> collection) {
    StringBuilder sb = new StringBuilder();
    sb.append("[");
    for (T element : collection) {
        sb.append(element).append(", ");
    }
    if (sb.length() > 1) {
        sb.setLength(sb.length() - 2);
    }
    sb.append("]");
    return sb.toString();
}

这样,在打印Java集合时,输出的结果将更加直观和易读。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Effective.Java 读书笔记(10)关于toString

10.Always override toString 针对于java.lang.Object已经帮我们实现好了的toString方法,当我们自己定义出来的类使用这古老的toString方法的时候,通常不会返回给你一个比较满意的字符串...的确是个好的建议 需要注意的是,重写toString方法的重要性可能不会像我们之前说提过的equals和hashCode方法来的重要,但是,重写这个方法并且对这个方法做出一个漂亮的实现会让我们的类用起来更加的愉快...举个例子,比如说Collection这样的集合类,当你打印Map的时候你会更加愿意看到“ {Jenny=PhoneNumber@163b91} ”还是“ {Jenny=(707) 867-5309} ”...实际应用中,toString方法需要返回该对象的所有的有意思的信息 正如我们之前提到的phoneNumber类,如果有这么一个集合包含了成千上万的phoneNumber,那么它应该返回一个概括性的描述...,这是我们需要好好考虑的 不管你打不打算指定返回值的格式,你都应该在文档中清楚地说明你的打算,举个例子: /** * Returns the string representation of this

48440
  • 如何优雅地打印一个Java对象?

    本篇文章,我们来探讨一下如何优雅地打印一个 Java 对象。 真没想到,这个问题的访问量像阿尔泰山一样高,访问量足足有 29+ 万次,这不得了啊!说明有很多很多的程序员被这个问题困扰过。...所有的 Java 对象都默认附带了一个 toString() 的方法,当我们尝试打印这个对象的时候,该方法就会被调用。...System.out.println(object); // 调用 object.toString() toString() 方法由 Object 类(所有 Java 对象的超类)定义,该方法会返回一个看起来晦涩难懂的字符串...输出结果: Cmower(name=沉默王二) 04、打印对象列表(数组或者集合) 上述内容已经把打印单个对象的事情唠明白了,are you ok?接下来,我们来说道说道打印对象列表的事儿。...)); 输出结果: [Cmower{name='沉默王二'}, Cmower{name='沉默王三'}] 2)集合 对于集合来说,可以直接打印就能输出我们预期的结果。

    1.8K20

    Java进阶-集合(3)与泛型

    boolean hasNext():如果被迭代的集合元素还没有被遍历完,则返回 true。 next():返回集合里的下一个元素。...()方法返回的元素 } coll="zhaoliu"; //对coll变量赋值,不会改变集合元素本身 } System.out.println...二、泛型 1、集合的设计角度 把集合看成容器,将对象“丢进”集合,集合不会记住对象的数据类型(即丢失了对象的状态信息),再次取出时,对象的编译类型变为Object(运行时类型不变) 1.1 优点 具有很好的通用性...,然后向集合中添加图书元素,最后输出集合中的内容 import java.util.ArrayList; //导包 import java.util.HashMap; import java.util.List...集合 //定义Interger类型的键,Book类型对象整体作为值,通过get()方法得到键对应的值打印输出即为全部图书信息 books.put(1001,book1);

    28821

    Java实战入门:深入解析Java中的`toString()`方法

    取材自该网站:java方法 一、toString()方法的定义和作用 toString()方法定义在java.lang.Object类中,几乎所有Java类都直接或间接继承自Object类,因此所有Java...例如,在调试过程中,打印对象的toString()值,可以直接查看对象的状态,便于问题排查。...对象输出: 在需要输出对象信息时(如在控制台打印、文件输出、网络传输等),toString()方法提供了一种方便的方式。...例如,在集合类(如List、Set等)中打印元素信息时,重写toString()方法可以提供更直观的对象表示。...通过本文的详细解析,相信读者对Java中的toString()方法有了更深入的理解,并能在实际编程中正确且高效地实现该方法。

    72710

    Java 编程思想第十二章 - 容器持有对象

    文章目录 1 泛型和类型安全的集合 泛型下的向上转型 2 基本概念 3 添加元素组 4 打印集合 默认的打印 5 List 6 迭代器Iterators ListIterator 链表LinkedList...因此,不能再简单地这样依靠创建命名的引用来持有每一个对象: MyType aReference; 因为你不会知道实际上到底需要多少个这样的引用。 Java有多种方式保存对象的引用。...在运行时,当尝试将 Orange 对象转为 Apple 时,会出现输出中显示的错误。 使用 Java 泛型来创建类可能很复杂。但是,使用预先定义的泛型类却相当简单。...4 打印集合 必须使用 Arrays.toString() 来生成数组的可打印形式。但打印集合无需任何帮助。 Java集合库中的两个主要类型。...默认的打印 使用集合提供的 toString() 方法即可生成可读性很好的结果。 Collection 打印出的内容用方括号括住,每个元素由逗号分隔。

    1.4K20

    30. Groovy 语法-控制结构:if,switch,for,try等知识

    如果switch值的toString()表示与正则表达式匹配,则正则表达式大小写值匹配。 如果switch值包含在集合中,则集合用例值匹配。这也包括范围(因为它们是列表)。...如果调用闭包返回一个根据Groovy truth为true的结果,闭包大小写值就匹配。 如果以上任何一个都没有被使用,那么如果case值等于开关值,则case值匹配。...因为while的条件一直为true的话,while就不会退出了。...如果断言为真,那么什么也不会发生。如果断言为假,那么它提供被断言表达式的每个子表达式的值的可视化表示。...| | 15 2 7 | 2 5 7 false at zinyan.run(zinyan.groovy:5) 如果不想要像上面那样漂亮的打印错误消息

    1K20

    Java8编程思想精粹(十)-容器(上)

    因此,不能再简单地这样依靠创建命名的引用来持有每一个对象: MyType aReference; 因为你不会知道实际上到底需要多少个这样的引用。 Java有多种方式保存对象的引用。...在运行时,当尝试将 Orange 对象转为 Apple 时,会出现输出中显示的错误。 使用 Java 泛型来创建类可能很复杂。但是,使用预先定义的泛型类却相当简单。...4 打印集合 必须使用 Arrays.toString() 来生成数组的可打印形式。但打印集合无需任何帮助。 Java集合库中的两个主要类型。...默认的打印 使用集合提供的 toString() 方法即可生成可读性很好的结果。 Collection 打印出的内容用方括号括住,每个元素由逗号分隔。...迭代器通常被称为轻量级对象:创建它的代价小。 Java 的 Iterator 只能单向移动。这个 Iterator 只能用来: iterator() 要求集合返回一个 Iterator。

    1.3K41

    Java GetterSetter “防坑指南”

    Getter/Setter 在 Java 中被广泛使用,看似简单,但并非每个 Java 开发人员都能很好理解并正确实现 Getter/Setter 方法。...,产生了以下输出: 100 97 99 88 69 现在,我们修改 myScores 数组中第 2 个元素的值,并再次打印 scores: myScores[1] = 101; yang.showScores...() { return name; } } 对于 String,每复制一个 String 对象都会为之创建新对象,而其他 Object 类型的对象则不会,它们仅复制引用,因此这就是两个集合不同但它们包含相同对象的原因...这些方法返回浅表副本,这些浅表副本不会将元素从源 Collection 复制到目标。...•对于对象的自定义类型的集合:•实现自定义类型的 clone() 方法。•对于 setter,将克隆的项目从源集合添加到目标集合。•对于 getter,创建一个新的 Collection,并将其返回。

    1.3K40

    Java集合框架(二)—— HashSet、LinkedHashSet、TreeSet和EnumSet

    Set集合不容许包含相同的元素,如果试图把两个相同元素加入到同一个Set集合中,则添加操作失败,add方法返回false,且新元素不会被加入。...也就是说,只要两个对象用equals方法比较返回true,Set就不会接受这两个对象,反之,只要两个对象用equals方法比较返回false,Set就会接受这两个对象(甚至这两个对象是同一个对象,Set...最后输出set集合时,将看到输出结果只有一个元素。 上面介绍的是Set集合的通用知识,完全适合HashSet、TreeSet和EnumSet三个实现类。...HashSet类   HashSet具有以下特点: HashSet具有很好的对象检索性能,当从HashSet中查找某个对象时,Java系统首先调用对象的hashCode方法获得该对象的哈希码,然后根据哈希码找到对应的存储区域...自然排序   Java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现该接口的类必须实现该方法,实现了该接口的类的对象就可以比较大小了

    1.2K90

    Effective-java-读书笔记之枚举和注解

    如果这样的硬编码字符串常量中包含书写错误, 编译时不会检测到, 在运行时会报错.Java1.5开始提供了枚举类型.枚举类型: 实例受控, 是单例的泛型化, 本质上是单元素的枚举.枚举类型提供的优点:编译时的类型安全....多个枚举类型可包含同名常量.增加或重新排列枚举类型中的常量, 无需重新编译它的客户端代码.toString()方法将枚举转化成可打印的字符串.允许添加任意的方法和域, 并实现任意的接口....返回每个枚举常量在类型中的数字位置.永远不要根据枚举的序数导出与它关联的值, 而是要将它保存在一个实例域中.第36条 用EnumSet代替位域如果一个枚举类型的元素主要用在集合中, 一般就用int枚举模式...(无法打印, 无法遍历.)java.util提供了EnumSet类来有效地表示从单个枚举类型中提取的多个值的多个集合.第37条 用EnumMap代替序数索引有时候, 你可能会见到用ordinal方法来索引数组的代码...这样做有很多缺点, 注解很好地解决了这些问题.代码例子:@Test注解.有参数的@ExceptionTest注解.Java 8的@Repeatable注解.第40条 坚持使用Override注解举例:

    56350

    如何在JavaScript中使用for循环

    前言 循环允许我们通过循环数组或对象中的项并做一些事情,比如说打印它们,修改它们,或执行其他类型的任务或动作。JavaScript有各种各样的循环,for循环允许我们对一个集合(如数组)进行迭代。...然而,这个输出的顺序与初始化对象时创建的项的索引顺序不同。 在数组中使用for…in循环 在JavaScript中使用for...in循环来迭代数组时,在这种情况下,key将是元素的索引。...使用for…in循环迭代对象 因为for...in循环只迭代对象的可枚举属性,也就是对象自有属性,而不是像toString这样属于对象原型的属性。所以使用for...in循环来迭代对象是很好的。...这主要是由于它的无序性。 因此,如果你在迭代到达某一项之前删除它,那么这项在整个循环中根本就不会被访问。 同样地,如果你对一个属性进行修改,并不能保证这项不会被再次访问。...返回项的顺序与for...in相同。

    5.1K10

    Java集合(四)--treesettreemap章节练习题目去重原理的解读和应用

    1.treeset结构 下面的这个就是对于这个treeset结构进行测试的一个程序,在这个里面,add表示的就是对于这个树上面进行元素的添加,打印的结果也是无序的; 我们之前进行这个集合选型介绍的时候,...,主要就是我们的这个cmp是这个比较的返回值,当插入的这个key和这个已有的key一样的时候,就会cmp返回0,这样进行下面的这个分支判断的时候,就会进入这个else里面去,进而直接返回,这个就是插入相同内容不会打印的原因...= null); * 上面第一次添加传进去的是两个一样的key,但是这个返回值不会被我们接受, * 这个主要是为了判断我们的这个数组是不是空的,如果是空的,这个compare方法 * 里面就会抛异常...),这个时候就不会被添加, 如果没有传递comparator对象,则以我们添加对象实现的comparable接口的compareTo方法(string.java文件)进行去重;字符串的compareTo...entry.getValue()); } System.out.println("======工资======"); //得到每一组元素里面的value并且打印输出

    9210

    【建议收藏合集整理】国一大佬带你,蓝桥杯Java组拿奖基础知识整理集合,看完,3天冲蓝桥杯省一。

    输出的内容可以是任意类型,Java会自动将其转换为字符串并输出。 通过灵活运用 System.out.println() 方法,可以方便地进行调试和输出信息,帮助理解程序的执行过程和结果。..."); // 替换索引6到索引11之间的字符串为"Java" System.out.println(sb.toString()); // 输出 "Hello Java" 删除字符: StringBuilder...:" + Arrays.toString(arr)); } } 使用 Collections.sort() 对集合排序: import java.util.ArrayList; import java.util.Collections...在Java中,可以使用不同的输出方法将数据打印到控制台或文件中,具体取决于输出的数据类型和格式。以下是一些常见的输出方法示例: 1....输出方法示例,你可以根据需要选择适合的方法来打印输出你的数据。

    56711

    Flink实战(四) - DataSet API编程

    最初从某些Source源创建数据集(例如,通过读取文件或从本地集合创建) 结果通过sink返回,接收器可以例如将数据写入(分布式)文件或标准输出(例如命令行终端) Flink程序可以在各种环境中运行...3 测试环境 4 Data Sources简介 数据源创建初始数据集,例如来自文件或Java集合。...每个字段的值来自对象的toString()方法。...print()/ printToErr()/ print(String msg)/ printToErr(String msg) 打印标准输出/标准错误流上每个元素的toString()值。...可选地,可以提供前缀(msg),其前缀为输出。这有助于区分不同的打印调用。如果并行度大于1,则输出也将以生成输出的任务的标识符为前缀。

    79030

    Java学习笔记之IO流&Properties集合

    创建字符缓冲输出流对象 7. 遍历集合,得到每一个学生对象 8. 把学生对象的数据拼接成指定格式的字符串 9. 调用字符缓冲输出流对象的方法写数据 10....()); // 调用字符缓冲输出流对象的方法写数据 bw.write(sb.toString()); bw.newLine()...打印流分类     字节打印流: PrintStream     字符打印流:PrintWriter 打印流的特点     只负责输出数据,不负责读取数据     永远不会抛出IOException...,查看的数据原样输出     可以改变输出语句的目的地       public static void setOut(PrintStream out): 重新分配“标准”输出流 示例 package...文件打印流改进版 需求:把模块目录下的PrintSteamDemo.java复制到模块目录下的Copy.java 分析步骤:   根据数据源创建字符输入流对象   根据目的地创建字符输出流对象   读写数据

    43020

    测试驱动开发 Test-Driven Development

    等等,输出打印到控制台的话,我们怎么写测试验证输出是否正确呢?...(); } 运行测试,干净漂亮地通过了测试: ?...100%的测试覆盖率,没有重复、多余的代码,漂亮地完成所有需求。如果你不放心,多加几条测试用例,多运行几遍测试命令,这就是测试驱动开发产出的有质量保证的代码。...其实这两者都不能很好描述TDD的实现过程,准确地说,实现顺序没有太大关系,因为TDD是基于 known-to-unknown 的模式进行,即用已知的来推出未知的。...如果祖传代码没有测试,那就尝试找到程序输入输出的接缝处,给他补充测试,这样可以最大程度确保重构不会大刀阔斧地破坏原有逻辑。 保持代码年轻的秘诀?

    1.6K10
    领券