From d6981a1a78e351ef2fef63b6378313aa7f516e72 Mon Sep 17 00:00:00 2001 From: 20035729 Date: Fri, 7 Apr 2023 10:04:12 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=89=E5=85=83?= =?UTF-8?q?=E7=BB=84ImmutableTriple/MutableTriple?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hutool/core/tuple/ImmutableTriple.java | 101 ++++++++++++++ .../hutool/core/tuple/MutableTriple.java | 128 ++++++++++++++++++ .../dromara/hutool/core/tuple/TripleTest.java | 23 ++++ 3 files changed, 252 insertions(+) create mode 100644 hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java create mode 100644 hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java create mode 100644 hutool-core/src/test/java/org/dromara/hutool/core/tuple/TripleTest.java diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java new file mode 100644 index 000000000..bf8784a0e --- /dev/null +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java @@ -0,0 +1,101 @@ +package org.dromara.hutool.core.tuple; + +import java.io.Serializable; +import java.util.Objects; + +/** + * 不可变三元组对象 + * + * @param 左值类型 + * @param 中值类型 + * @param 右值类型 + * @author kirno7 + * @since 6.0.3 + */ +public class ImmutableTriple implements Serializable { + private static final long serialVersionUID = 1L; + + protected L left; + protected M middle; + protected R right; + + /** + * 构建ImmutableTriple对象 + * + * @param 左值类型 + * @param 中值类型 + * @param 右值类型 + * @param left 左值 + * @param middle 中值 + * @param right 右值 + * @return ImmutableTriple + * @since 6.0.3 + */ + public static ImmutableTriple of(L left, M middle, R right) { + return new ImmutableTriple<>(left, middle, right); + } + + /** + * 构造 + * + * @param left 左值 + * @param middle 中值 + * @param right 右值 + */ + private ImmutableTriple(L left, M middle, R right) { + this.left = left; + this.middle = middle; + this.right = right; + } + + /** + * 获取左值 + * + * @return 左值 + */ + public L getLeft() { + return this.left; + } + + /** + * 获取中值 + * + * @return 中值 + */ + public M getMiddle() { + return this.middle; + } + + /** + * 获取右值 + * + * @return 右值 + */ + public R getRight() { + return this.right; + } + + @Override + public String toString() { + return "ImmutableTriple {" + "left=" + left + ", middle=" + middle + ", right=" + right + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o instanceof ImmutableTriple) { + ImmutableTriple triple = (ImmutableTriple) o; + return Objects.equals(getLeft(), triple.getLeft()) && + Objects.equals(getMiddle(), triple.getMiddle()) && + Objects.equals(getRight(), triple.getRight()); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hashCode(left) ^ Objects.hashCode(middle) ^ Objects.hashCode(right); + } +} diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java new file mode 100644 index 000000000..fec4ed41d --- /dev/null +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java @@ -0,0 +1,128 @@ +package org.dromara.hutool.core.tuple; + +import java.io.Serializable; +import java.util.Objects; + +/** + * 可变三元组对象 + * + * @param 左值类型 + * @param 中值类型 + * @param 右值类型 + * @author kirno7 + * @since 6.0.3 + */ +public class MutableTriple implements Serializable { + private static final long serialVersionUID = 1L; + + protected L left; + protected M middle; + protected R right; + + /** + * 构建MutableTriple对象 + * + * @param 左值类型 + * @param 中值类型 + * @param 右值类型 + * @param left 左值 + * @param middle 中值 + * @param right 右值 + * @return MutableTriple + * @since 6.0.3 + */ + public static MutableTriple of(L left, M middle, R right) { + return new MutableTriple<>(left, middle, right); + } + + /** + * 构造 + * + * @param left 左值 + * @param middle 中值 + * @param right 右值 + */ + private MutableTriple(L left, M middle, R right) { + this.left = left; + this.middle = middle; + this.right = right; + } + + /** + * 获取左值 + * + * @return 左值 + */ + public L getLeft() { + return this.left; + } + + /** + * 获取中值 + * + * @return 中值 + */ + public M getMiddle() { + return this.middle; + } + + /** + * 获取右值 + * + * @return 右值 + */ + public R getRight() { + return this.right; + } + + /** + * 设置左值 + * + * @param left 左值 + */ + public void setLeft(L left) { + this.left = left; + } + + /** + * 设置中值 + * + * @param middle 中值 + */ + public void setMiddle(M middle) { + this.middle = middle; + } + + /** + * 设置右值 + * + * @param right 右值 + */ + public void setRight(R right) { + this.right = right; + } + + @Override + public String toString() { + return "MutableTriple {" + "left=" + left + ", middle=" + middle + ", right=" + right + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o instanceof MutableTriple) { + MutableTriple triple = (MutableTriple) o; + return Objects.equals(getLeft(), triple.getLeft()) && + Objects.equals(getMiddle(), triple.getMiddle()) && + Objects.equals(getRight(), triple.getRight()); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hashCode(left) ^ Objects.hashCode(middle) ^ Objects.hashCode(right); + } +} diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/tuple/TripleTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/tuple/TripleTest.java new file mode 100644 index 000000000..2402e6ad5 --- /dev/null +++ b/hutool-core/src/test/java/org/dromara/hutool/core/tuple/TripleTest.java @@ -0,0 +1,23 @@ +package org.dromara.hutool.core.tuple; + +import org.junit.jupiter.api.Test; + +/** + * {@link ImmutableTriple} 三元组单元测试 + * {@link MutableTriple} 三元组单元测试 + * + * @author kirno7 + */ +public class TripleTest { + @Test + public void tripleTest() { + MutableTriple mutableTriple = MutableTriple.of("1", "1", "1"); + System.out.println(mutableTriple); + mutableTriple.setLeft("2"); + mutableTriple.setMiddle("2"); + mutableTriple.setRight("2"); + System.out.println(mutableTriple); + ImmutableTriple immutableTriple = ImmutableTriple.of("3", "3", "3"); + System.out.println(immutableTriple); + } +} From cf4e64a49bf0824e9be916a16869310b995c9e0a Mon Sep 17 00:00:00 2001 From: emptypoint <1215582715@qq.com> Date: Fri, 7 Apr 2023 02:54:08 +0000 Subject: [PATCH 2/5] Update hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java --- .../java/org/dromara/hutool/core/tuple/ImmutableTriple.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java index bf8784a0e..972a446b9 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java @@ -10,7 +10,7 @@ import java.util.Objects; * @param 中值类型 * @param 右值类型 * @author kirno7 - * @since 6.0.3 + * @since 6.0.0 */ public class ImmutableTriple implements Serializable { private static final long serialVersionUID = 1L; From d0b7445fa85a2ac750d96a5895dbb7b8d6b49b0c Mon Sep 17 00:00:00 2001 From: 20035729 Date: Fri, 7 Apr 2023 10:56:52 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=B8=89=E5=85=83=E7=BB=84ImmutableTriple?= =?UTF-8?q?=E6=88=90=E5=91=98=E4=BF=AE=E6=94=B9=E4=B8=BAfinal/6.0.3?= =?UTF-8?q?=E6=94=B9=E4=B8=BA6.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/hutool/core/tuple/ImmutableTriple.java | 12 ++++++------ .../org/dromara/hutool/core/tuple/MutableTriple.java | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java index 972a446b9..d9b090a6f 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java @@ -15,9 +15,9 @@ import java.util.Objects; public class ImmutableTriple implements Serializable { private static final long serialVersionUID = 1L; - protected L left; - protected M middle; - protected R right; + protected final L left; + protected final M middle; + protected final R right; /** * 构建ImmutableTriple对象 @@ -87,9 +87,9 @@ public class ImmutableTriple implements Serializable { } if (o instanceof ImmutableTriple) { ImmutableTriple triple = (ImmutableTriple) o; - return Objects.equals(getLeft(), triple.getLeft()) && - Objects.equals(getMiddle(), triple.getMiddle()) && - Objects.equals(getRight(), triple.getRight()); + return Objects.equals(left, triple.getLeft()) && + Objects.equals(middle, triple.getMiddle()) && + Objects.equals(right, triple.getRight()); } return false; } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java index fec4ed41d..787c4537f 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java @@ -10,7 +10,7 @@ import java.util.Objects; * @param 中值类型 * @param 右值类型 * @author kirno7 - * @since 6.0.3 + * @since 6.0.0 */ public class MutableTriple implements Serializable { private static final long serialVersionUID = 1L; @@ -114,9 +114,9 @@ public class MutableTriple implements Serializable { } if (o instanceof MutableTriple) { MutableTriple triple = (MutableTriple) o; - return Objects.equals(getLeft(), triple.getLeft()) && - Objects.equals(getMiddle(), triple.getMiddle()) && - Objects.equals(getRight(), triple.getRight()); + return Objects.equals(left, triple.getLeft()) && + Objects.equals(middle, triple.getMiddle()) && + Objects.equals(right, triple.getRight()); } return false; } From 126aa0211bad6d8cd04ae01f8d2f6fd28994722a Mon Sep 17 00:00:00 2001 From: 20035729 Date: Fri, 7 Apr 2023 11:05:01 +0800 Subject: [PATCH 4/5] =?UTF-8?q?6.0.3=E6=94=B9=E4=B8=BA6.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/hutool/core/tuple/ImmutableTriple.java | 2 +- .../main/java/org/dromara/hutool/core/tuple/MutableTriple.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java index d9b090a6f..bf8e9171e 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java @@ -29,7 +29,7 @@ public class ImmutableTriple implements Serializable { * @param middle 中值 * @param right 右值 * @return ImmutableTriple - * @since 6.0.3 + * @since 6.0.0 */ public static ImmutableTriple of(L left, M middle, R right) { return new ImmutableTriple<>(left, middle, right); diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java index 787c4537f..775675ae9 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java @@ -29,7 +29,7 @@ public class MutableTriple implements Serializable { * @param middle 中值 * @param right 右值 * @return MutableTriple - * @since 6.0.3 + * @since 6.0.0 */ public static MutableTriple of(L left, M middle, R right) { return new MutableTriple<>(left, middle, right); From b1c032b326c11d8aeb6aad1487a1e9b2c63bddc0 Mon Sep 17 00:00:00 2001 From: 20035729 Date: Mon, 10 Apr 2023 14:55:22 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=8A=BD=E5=8F=96=E6=8A=BD=E8=B1=A1?= =?UTF-8?q?=E7=B1=BB/=E5=87=8F=E5=B0=91=E9=87=8D=E5=A4=8D=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hutool/core/tuple/ImmutableTriple.java | 32 ++-------- .../hutool/core/tuple/MutableTriple.java | 32 ++-------- .../org/dromara/hutool/core/tuple/Triple.java | 63 +++++++++++++++++++ 3 files changed, 71 insertions(+), 56 deletions(-) create mode 100644 hutool-core/src/main/java/org/dromara/hutool/core/tuple/Triple.java diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java index bf8e9171e..8f3019c59 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/ImmutableTriple.java @@ -1,8 +1,5 @@ package org.dromara.hutool.core.tuple; -import java.io.Serializable; -import java.util.Objects; - /** * 不可变三元组对象 * @@ -12,7 +9,7 @@ import java.util.Objects; * @author kirno7 * @since 6.0.0 */ -public class ImmutableTriple implements Serializable { +public class ImmutableTriple extends Triple { private static final long serialVersionUID = 1L; protected final L left; @@ -53,6 +50,7 @@ public class ImmutableTriple implements Serializable { * * @return 左值 */ + @Override public L getLeft() { return this.left; } @@ -62,6 +60,7 @@ public class ImmutableTriple implements Serializable { * * @return 中值 */ + @Override public M getMiddle() { return this.middle; } @@ -71,31 +70,8 @@ public class ImmutableTriple implements Serializable { * * @return 右值 */ + @Override public R getRight() { return this.right; } - - @Override - public String toString() { - return "ImmutableTriple {" + "left=" + left + ", middle=" + middle + ", right=" + right + '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o instanceof ImmutableTriple) { - ImmutableTriple triple = (ImmutableTriple) o; - return Objects.equals(left, triple.getLeft()) && - Objects.equals(middle, triple.getMiddle()) && - Objects.equals(right, triple.getRight()); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hashCode(left) ^ Objects.hashCode(middle) ^ Objects.hashCode(right); - } } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java index 775675ae9..ad3c205b6 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/MutableTriple.java @@ -1,8 +1,5 @@ package org.dromara.hutool.core.tuple; -import java.io.Serializable; -import java.util.Objects; - /** * 可变三元组对象 * @@ -12,7 +9,7 @@ import java.util.Objects; * @author kirno7 * @since 6.0.0 */ -public class MutableTriple implements Serializable { +public class MutableTriple extends Triple { private static final long serialVersionUID = 1L; protected L left; @@ -53,6 +50,7 @@ public class MutableTriple implements Serializable { * * @return 左值 */ + @Override public L getLeft() { return this.left; } @@ -62,6 +60,7 @@ public class MutableTriple implements Serializable { * * @return 中值 */ + @Override public M getMiddle() { return this.middle; } @@ -71,6 +70,7 @@ public class MutableTriple implements Serializable { * * @return 右值 */ + @Override public R getRight() { return this.right; } @@ -101,28 +101,4 @@ public class MutableTriple implements Serializable { public void setRight(R right) { this.right = right; } - - @Override - public String toString() { - return "MutableTriple {" + "left=" + left + ", middle=" + middle + ", right=" + right + '}'; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o instanceof MutableTriple) { - MutableTriple triple = (MutableTriple) o; - return Objects.equals(left, triple.getLeft()) && - Objects.equals(middle, triple.getMiddle()) && - Objects.equals(right, triple.getRight()); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hashCode(left) ^ Objects.hashCode(middle) ^ Objects.hashCode(right); - } } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tuple/Triple.java b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/Triple.java new file mode 100644 index 000000000..2b2a9b006 --- /dev/null +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tuple/Triple.java @@ -0,0 +1,63 @@ +package org.dromara.hutool.core.tuple; + +import java.io.Serializable; +import java.util.Objects; + +/** + * 三元组抽象类 + * + * @param 左值类型 + * @param 中值类型 + * @param 右值类型 + * @author kirno7 + * @since 6.0.0 + */ +public abstract class Triple implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 获取左值 + * + * @return 左值 + */ + public abstract L getLeft(); + + /** + * 获取中值 + * + * @return 中值 + */ + public abstract M getMiddle(); + + /** + * 获取右值 + * + * @return 右值 + */ + public abstract R getRight(); + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o instanceof ImmutableTriple) { + ImmutableTriple triple = (ImmutableTriple) o; + return Objects.equals(getLeft(), triple.getLeft()) && + Objects.equals(getMiddle(), triple.getMiddle()) && + Objects.equals(getRight(), triple.getRight()); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hashCode(getLeft()) ^ Objects.hashCode(getMiddle()) ^ Objects.hashCode(getRight()); + } + + @Override + public String toString() { + return "Triple {" + "left=" + getLeft() + ", middle=" + getMiddle() + ", right=" + getRight() + '}'; + } +} +