我有一小段代码可以像[1,2,3]一样给我,但我们可以将其修改为{1 @ 2 @ 3}或任何其他格式。
public static void main(String[] args) {
Set<Integer> mySet = new HashSet<Integer>();
Integer i1=1;
Integer i2=2;
Integer i3=3;
mySet.add(i1);
mySet.add(i2);
mySet.add(i3);
System.out.println(mySet);
}
答案 0 :(得分:0)
好吧,你可以用
System.out.printf("{%s}\n", mySet.stream().collect(Collectors.joining("@")));
获得您想要的结果。
要为创建的Set
保留此格式,您可以使用此格式覆盖人们正在谈论的toString()
的覆盖:
public static void main(String[] args) {
Set<Integer> mySet = new HashSet<Integer>() {
public String toString() {
return String.format("{%s}", stream().collect(Collectors.joining("@")));
}
}
Integer i1=1;
Integer i2=2;
Integer i3=3;
mySet.add(i1);
mySet.add(i2);
mySet.add(i3);
System.out.println(mySet);
}
答案 1 :(得分:0)
你做不到。但你可以解析它toString并修改它。
例如
public static<T> String modifier(Set<T> input, String begin, String separator, String end) {
return input.toString()
.replace("[", begin)
.replace(", ", separator)
.replace("]", end);
}
然后致电:
System.out.println(modifier(mySet, "{", "@", "}"));
当然你可以删除所有参数并将其作为defualt:
public static<T> String modifier(Set<T> input) {
return input.toString()
.replace("[", "{")
.replace(", ", "@")
.replace("]", "}");
}
答案 2 :(得分:0)
为Java 8
构建功能性解决方案。
您可以构建一个执行stream
的{{1}},然后使用toString
加入所有人。{/ p>
collect
答案 3 :(得分:0)
System.out.println(mySet);
mySet.toString()
将调用AbstractCollection
,将使用的实现是[1, 6, 9, 8, 2, 3, "bar", "foo"]
,其中包含HashSet
如果你打算用不同的方式打印它,但仍然使用StringBuilder
实现,你可以:
只使用private static <T> String print(Set<T> set) {
return "{" + set.stream().map(Object::toString).collect(Collectors.joining("@")) + "}";
}
StringBuilder
使用@
迭代并插入private static <T> String print(Set<T> set) {
StringBuilder sb = new StringBuilder("{");
if (set.isEmpty())
return sb.append("}").toString();
for (T element : set) {
sb.append(element.toString()).append("@");
}
sb.replace(sb.lastIndexOf("@"), sb.lastIndexOf("@") + 1, "");
return sb.append("}").toString();
}
if (is_nan($percentageChange) || is_infinite($percentageChange)) {
$percentageCHange = 0;
} else {
$percentageCHange;
}
答案 4 :(得分:-1)
的System.out.println(MYSET); 方法println()基本上使用toString()用于除了一些异常之外的任何对象,所以当我们在这个方法中传递对象的集合类型时,它调用相关集合的toString()方法,就像在你的情况下它是HashSet一样.java但这个类有toString()继承AbstractCollection.java的方法,如果我们检查它看起来像这样的方法:
public String toString() {
Iterator<E> it = iterator();
if (! it.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = it.next();
sb.append(e == this ? "(this Collection)" : e);
if (! it.hasNext())
return sb.append(']').toString();
sb.append(',').append(' ');
}
}
所以你必须根据你的要求覆盖这个方法。