Tag: tostring

在一次调用中将ArrayList.toString()转换回ArrayList

我有一个ArrayList的toString()表示。 将toString()值复制到剪贴板,我想将其复制回我的IDE编辑器,并在一行中创建ArrayList实例。 事实上,我真正在做的是: 我的ArrayList.toString()包含设置unit testing所需的数据。 我想将此ArrayList.toString()复制到我的编辑器中,以针对此边缘情况构建测试 我不想手工解析任何东西 我的输入如下: [15.82,15.870000000000001,15.92,16.32,16.32,16.32,16.32,17.05,17.05,17.05,17.05,18.29,18.29,19.16] 以下不起作用: Arrays.asList() 谷歌collectionsLists.newArrayList() 建议?

在Java中获取命令提示输出到字符串

我需要一个java方法来读取命令提示输出并将其存储到String中以便读入Java。 这是我到目前为止所做的,但是工作不正常。 public void testGetOutput() { System.out.println(“\n\n****This is the testGetOutput Method!****”); String s = null; String query = “dir ” + this.desktop; try { Runtime runtime = Runtime.getRuntime(); InputStream input = runtime.exec(“cmd /c ” + query).getInputStream(); BufferedInputStream buffer = new BufferedInputStream(input); BufferedReader commandResult = new BufferedReader(new InputStreamReader(buffer)); String line = “”; try { while ((line […]

防止toString()中无限递归的最有效方法?

如果收集项的图形中的某个地方是对自身的引用,则对集合上的字符串可以进入无限循环。 见下面的例子。 是的,良好的编码实践应该首先防止这种情况,但无论如何,我的问题是:在这种情况下检测递归的最有效方法是什么? 一种方法是在threadlocal中使用一个集合,但这看起来有点沉重。 public class AntiRecusionList extends ArrayList { @Override public String toString() { if ( /* ???? test if “this” has been seen before */ ) { return “{skipping recursion}”; } else { return super.toString(); } } } public class AntiRecusionListTest { @Test public void testToString() throws Exception { AntiRecusionList list1 = new […]

为什么toString()方法在Java中的Array和ArrayList对象之间的工作方式不同

String[] array = {“a”,”c”,”b”}; ArrayList list = new ArrayList(); list.add(“a”); list.add(“b”); list.add(“c”); System.out.println(array); System.out.println(list); 对于list [a, b, c]输出,而对于array输出一些地址。 当我们想输出array值时,我们可以使用Arrays.toString(array); 它就像list一样工作。 我只是想知道为什么我们不能直接在array上调用toString()来获取值。 这样做不是更直观和方便吗? 是什么导致Array和ArrayList的不同处理?

重写toString方法

我使用.toString来返回对象的字符串表示,即 jcb.engineMove(move.toString()); 将产生e2e4。 我想要做的是将此对象(e2e4)的文本提取为字符串。 谷歌搜索后,我遇到了覆盖toString方法,所以我想出了这个: @Override public String toString() { String s = “”; int newRank = getRank(); int newFile = getFile(); final Move move = new Move(rank, file, newRank, newFile); s+=”” + move; return s; } 我的问题很基础: 这是正确的方法 在尝试获取对象的文本时如何调用此例程?

创建lambda表达式的字符串表示

出于调试目的,我试图在Java 8中创建lambda表达式的字符串表示(特别是Predicate s,尽管它对其他lambda表达式也很有意义)。我的想法是这样的: public class Whatever { private static String predicateToString(Predicate predicate) { String representation = … // do magic return representation; } public static void main(String[] args) { System.out.println(Whatever.predicateToString(i -> i % 2 == 0)); } } 输出将是i -> i % 2 == 0 (或逻辑等价的东西)。 toString()方法似乎没有任何帮助,输出就像com.something.Whatever$$Lambda$1/1919892312@5e91993f (我想这是因为toString()没有被覆盖)。 我不确定这样的东西是否可能,例如reflection,到目前为止我当然无法找到任何东西。 有任何想法吗?

使用Android项目中的EditText.toString()方法返回奇怪的文本。 为什么?

我对EditText对象的理解似乎有一个根本的差距。 我有一个Activity + Layout与一个EditText对象。 在EditText对象中键入几个字符并按Enter键后,我在onKey()侦听器中检索文本。 当我使用toString()方法来检索文本时,我得到一个奇怪的字符串,如: android.widget.EditText@43749ff0 尽管EditText.mText属性确实显示了我输入的字符串,但在测试期间显示“123”。 为什么toString()返回一个不同的结果,看起来是某种“uninitalize”值? 如何在mText属性中获取当前所需的字符串以及该奇怪的值是什么? – 罗斯克勒

是否真的值得为实体类实现toString()

始终建议覆盖(实现)类的toString()方法。 Java API文档本身说:“建议所有子类都覆盖此方法。” 有效Java中的Bloch具有“始终覆盖toString”项。 只有傻瓜才与布洛赫相矛盾,对吧? 然而,我怀疑这个建议:是否真的值得为实体类实现toString() ? 我会尝试列出我的推理。 实体对象具有唯一标识; 即使两个entites具有相同的属性值,它也永远不会与另一个对象相同。 也就是说,(对于非null x ),以下不变量适用于实体类(根据定义): x.equals(y) == (x == y) toString()方法返回一个“文本表示”其对象的字符串(用Java API的话说)。 良好的表示捕获对象的基本要素,因此如果两个表示不同,则表示不同(非等效)对象的表示,相反,如果两个表示是等价的,则它们是等效对象的表示。 这表明以下对于良好表示的不变性(对于非空x , y ): x.toString().equals(y.toString()) == x.equals(y) 因此,对于实体,我们期望x.toString().equals(y.toString()) == (x == y) ,即每个实体对象应该具有唯一的文本表示, toString()返回。 某些实体类将具有唯一的名称或数字ID字段,因此它们的toString()方法可以返回包含该名称或数字ID的表示。 但通常, toString()方法无法访问此类字段。 如果没有实体的唯一字段, toString()可以做的最好的事情就是包含一个对于不同对象不太可能相同的字段。 但这正是System.identityHashCode()的要求,这是Object.toString()提供的。 因此对于没有数据成员的实体对象, Object.toString()是可以的,但对于大多数类,您希望将它们包含在文本表示中,对吧? 实际上,您希望包含所有这些:如果类型具有(非null)数据成员x ,您可能希望在表示中包含x.toString() 。 但这会对持有对其他实体的引用的数据成员产生问题:即哪些是关联 。 如果Person对象具有Person father数据成员,则天真实现将生成该人的家谱的片段,而不是Person本身。 如果存在双向关联,那么天真的实现将会递归,直到您获得堆栈溢出所以可能会跳过持有关联的数据成员? 但是有关Person husband和Person wife数据成员的价值型Marriage怎么样? 这些关联应该由Marriage.toString()报告。 […]

使用toString打印链接列表

好的,所以我想学习如何打印链表。 我有我需要用于列表的所有方法,但我无法弄清楚如何显示节点的值。 现在我的main方法中没有任何内容,因为我在主要方法中尝试调用非静态方法时遇到错误。 我有一个toString方法,显示列表的内容。 我如何调用此toString来显示每个节点的值? 任何建议将不胜感激。 这是节点类: public class LinkedListNode { private int data; private LinkedListNode next; public LinkedListNode(int data) { this.data = data; this.next = null; } public int getData() { return data; } public void setData(int d) { data = d; } public LinkedListNode getNext() { return next; } public void setNext(LinkedListNode n) […]

如何在Java中覆盖ArrayList的toString方法?

我想在Java中为ArrayList创建自己的toString()方法。 但是,即使我将这样的toString()添加到包含ArrayList的类中,我也无法使它工作。 @Override public String toString() { String result = “+”; for (int i = 0; i < list.size(); i++) { result += " " + list.get(i); } return result; } 当我像这个list.toString()一样调用我的ArrayList时,我仍然得到默认表示。 我错过了什么吗?