This is an automated email from the ASF dual-hosted git repository.

nastra pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg.git


The following commit(s) were added to refs/heads/main by this push:
     new 0e05c5659f API, Core: improve toString in struct implementations 
(#18353)
0e05c5659f is described below

commit 0e05c5659fac18bc711dad2d8d891a833016a304
Author: Hongyue/Steve Zhang <[email protected]>
AuthorDate: Sun Nov 8 22:59:10 2026 -0800

    API, Core: improve toString in struct implementations (#18353)
---
 .../main/java/org/apache/iceberg/StructTransform.java    | 14 ++++----------
 core/src/main/java/org/apache/iceberg/PartitionData.java | 16 +++++++---------
 .../src/main/java/org/apache/iceberg/StaticDataTask.java |  6 ++++++
 .../main/java/org/apache/iceberg/data/GenericRecord.java | 14 ++++----------
 4 files changed, 21 insertions(+), 29 deletions(-)

diff --git a/api/src/main/java/org/apache/iceberg/StructTransform.java 
b/api/src/main/java/org/apache/iceberg/StructTransform.java
index dcb27488a5..dc27a71411 100644
--- a/api/src/main/java/org/apache/iceberg/StructTransform.java
+++ b/api/src/main/java/org/apache/iceberg/StructTransform.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Array;
 import java.util.Arrays;
 import java.util.List;
 import java.util.function.Function;
+import java.util.stream.Collectors;
 import org.apache.iceberg.relocated.com.google.common.base.Preconditions;
 import org.apache.iceberg.transforms.Transform;
 import org.apache.iceberg.util.SerializableFunction;
@@ -96,16 +97,9 @@ class StructTransform implements StructLike, Serializable {
 
   @Override
   public String toString() {
-    StringBuilder sb = new StringBuilder();
-    sb.append("[");
-    for (int i = 0; i < transformedTuple.length; i += 1) {
-      if (i > 0) {
-        sb.append(", ");
-      }
-      sb.append(transformedTuple[i]);
-    }
-    sb.append("]");
-    return sb.toString();
+    return Arrays.stream(transformedTuple)
+        .map(String::valueOf)
+        .collect(Collectors.joining(", ", "[", "]"));
   }
 
   @Override
diff --git a/core/src/main/java/org/apache/iceberg/PartitionData.java 
b/core/src/main/java/org/apache/iceberg/PartitionData.java
index b1c6752a4d..789c9b1182 100644
--- a/core/src/main/java/org/apache/iceberg/PartitionData.java
+++ b/core/src/main/java/org/apache/iceberg/PartitionData.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.List;
+import java.util.StringJoiner;
 import org.apache.avro.Schema;
 import org.apache.avro.generic.IndexedRecord;
 import org.apache.avro.specific.SpecificData;
@@ -158,16 +159,13 @@ public class PartitionData
 
   @Override
   public String toString() {
-    StringBuilder sb = new StringBuilder();
-    sb.append("PartitionData{");
-    for (int i = 0; i < data.length; i += 1) {
-      if (i > 0) {
-        sb.append(", ");
-      }
-      
sb.append(partitionType.fields().get(i).name()).append("=").append(data[i]);
+    List<Types.NestedField> fields = partitionType.fields();
+    StringJoiner joiner = new StringJoiner(", ", "PartitionData{", "}");
+    for (int pos = 0; pos < fields.size(); pos += 1) {
+      joiner.add(fields.get(pos).name() + "=" + data[pos]);
     }
-    sb.append("}");
-    return sb.toString();
+
+    return joiner.toString();
   }
 
   public PartitionData copy() {
diff --git a/core/src/main/java/org/apache/iceberg/StaticDataTask.java 
b/core/src/main/java/org/apache/iceberg/StaticDataTask.java
index 1a396f0bfc..f8573dcbd2 100644
--- a/core/src/main/java/org/apache/iceberg/StaticDataTask.java
+++ b/core/src/main/java/org/apache/iceberg/StaticDataTask.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
 import java.util.Arrays;
 import java.util.List;
 import java.util.function.Function;
+import java.util.stream.Collectors;
 import org.apache.iceberg.expressions.Expression;
 import org.apache.iceberg.expressions.Expressions;
 import org.apache.iceberg.io.CloseableIterable;
@@ -162,5 +163,10 @@ class StaticDataTask implements DataTask {
     public <T> void set(int pos, T value) {
       throw new UnsupportedOperationException("Setting values is not 
supported");
     }
+
+    @Override
+    public String toString() {
+      return 
Arrays.stream(values).map(String::valueOf).collect(Collectors.joining(", ", 
"[", "]"));
+    }
   }
 }
diff --git a/core/src/main/java/org/apache/iceberg/data/GenericRecord.java 
b/core/src/main/java/org/apache/iceberg/data/GenericRecord.java
index 6173a29ec5..3c292639b6 100644
--- a/core/src/main/java/org/apache/iceberg/data/GenericRecord.java
+++ b/core/src/main/java/org/apache/iceberg/data/GenericRecord.java
@@ -24,6 +24,7 @@ import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 import org.apache.iceberg.Schema;
 import org.apache.iceberg.StructLike;
 import org.apache.iceberg.relocated.com.google.common.base.Objects;
@@ -156,16 +157,9 @@ public class GenericRecord implements Record, StructLike {
 
   @Override
   public String toString() {
-    StringBuilder sb = new StringBuilder();
-    sb.append("Record(");
-    for (int i = 0; i < values.length; i += 1) {
-      if (i != 0) {
-        sb.append(", ");
-      }
-      sb.append(values[i]);
-    }
-    sb.append(")");
-    return sb.toString();
+    return Arrays.stream(values)
+        .map(String::valueOf)
+        .collect(Collectors.joining(", ", "Record(", ")"));
   }
 
   @Override

Reply via email to