首页
学习
活动
专区
工具
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

48340

如何优雅打印一个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);

    27021

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

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

    42710

    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) 如果不想要像上面那样漂亮打印错误消息

    96020

    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注解举例:

    56150

    如何在JavaScript中使用for循环

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

    5.1K10

    Flink实战(四) - DataSet API编程

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

    77930

    【建议收藏合集整理】国一大佬带你,蓝桥杯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....输出方法示例,你可以根据需要选择适合方法来打印输出数据。

    27311

    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 分析步骤:   根据数据源创建字符输入流对象   根据目的创建字符输出流对象   读写数据

    41920

    Flink实战(五) - DataStream API编程

    3.3 基于集合 fromCollection(Collection) 从Java Java.util.Collection创建数据流。集合所有数据元必须属于同一类型。...每个字段值来自对象toString()方法。 print()/ printToErr() 在标准输出/标准错误流上打印每个数据元toString()值。...可选,可以提供前缀(msg),其前缀为输出。这有助于区分不同打印调用。如果并行度大于1,则输出也将与生成输出任务标识符一起添加。...每个字段值来自对象toString()方法。 print()/ printToErr() - 在标准输出/标准错误流上打印每个元素toString()值。...可选,可以提供前缀(msg),其前缀为输出。这有助于区分不同打印调用。如果并行度大于1,则输出也将与生成输出任务标识符一起添加。

    1.6K10

    写出漂亮代码45个小技巧

    一般对于这种已经有开源项目并且已经做得很好时候,比如Hutool,就可以把轮子直接拿过来用了。...25、pojo类重写toString方法 pojo一般内部都有很多属性,重写toString方法可以方便在打印或者测试时候查看内部属性。...,如果直接select name 的话,那么在遍历索引时候,发现要查询字段在索引中已经存在,那么此时就会直接从索引中将name字段数据查出来,返回,而不会继续去查找聚簇索引,减少回表操作。...用第一张表做外循环,第二张表做内循环,外循环每一条记录跟内循环中记录作比较,符合条件输出,这种效率肯定低。...所以我建议装一个阿里代码规范插件,如果有代码不规范,会有提醒,这样就可以知道哪些是可以优化了。 如果你有强迫症,相信我,装了这款插件,你代码会写漂亮

    36620
    领券