我最近遇到了一个我以前没见过的成语:StringWriter和PrintWriter的字符串汇编.我的意思是,我知道如何使用它们,但我一直使用StringBuilder.是否有一个具体的理由选择一个而不是另一个?StringBuilder方法对我来说似乎更自然,但它只是风格吗?
我在这里看了几个问题(包括最近的一个问题:StringWriter或StringBuilder),但没有一个问题的答案实际上解决的问题是,是否有理由优先选择一个而不是简单的字符串汇编.
这是我见过并习惯了很多次的成语:StringBuilder的字符串汇编:
public static String newline = System.getProperty("line.separator");
public String viaStringBuilder () {
StringBuilder builder = new StringBuilder();
builder.append("first thing").append(newline); // NOTE: avoid doing builder.append("first thing" + newline);
builder.append("second thing").append(newline);
// ... several things
builder.append("last thing").append(newline);
return builder.toString();
}
Run Code Online (Sandbox Code Playgroud)
这是新的成语:StringWriter和PrintWriter的字符串汇编:
public String viaWriters() {
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
printWriter.println("first thing");
printWriter.println("second thing");
// ... several things
printWriter.println("last thing");
printWriter.flush();
printWriter.close();
return stringWriter.toString();
}
Run Code Online (Sandbox Code Playgroud)
编辑似乎没有具体的理由偏爱其中一个,所以我接受了最符合我理解的答案,并且+ 1除了所有其他答案.另外,我发布了自己的答案,给出了我运行的基准测试结果,以回答其中一个答案.谢谢大家.
再次编辑事实证明,有是 …
我花了几个小时寻找这个,但找不到它,所以我问.为什么在这?
我如何自定义Eclipse,以便在创建新的JUnit测试类或方法时,它包含不同的项目?对于其他来源,我只需进入Window-> Preferences,然后更改模板.
但对于JUnit来说,这似乎是不可能的.
我最近安装了MoreUnit,这似乎也没有帮助.
有指针吗?
有没有人见过在任何可关闭的对象上调用close方法时抛出的异常?
我在许多地方读到单身人士可以使用接口.有些我怎么也无法理解这一点.
我的问题类似于避免重新构建先决条件,除了我的需要不涉及创建的对象,而是调用了进程,因此在那里讨论的解决方案对我来说不起作用.至少我是这么认为的 - 但我是蚂蚁的新手.
我的情况是我正在编写一组蚂蚁目标,我需要一次只执行一次let-call-it 设置目标,无论调用哪个目标.这是一个非常简化的例子:
<?xml version="1.0"?>
<project name="Ant_Test" basedir=".">
<target name="setup">
<echo message="In setup" />
</target>
<target name="do.several" depends="setup">
<echo message="In do.several, calling do.first" />
<antcall target="do.first" />
<echo message="In do.several, calling do.second" />
<antcall target="do.second" />
</target>
<target name="do.first" depends="setup">
<echo message="In do.first" />
</target>
<target name="do.second" depends="setup">
<echo message="In do.second" />
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
我需要设置要准确地调用一次,无论do.several,do.first,或do.second被调用.通过我上面的天真尝试,在三次调用设置中调用do.several结果.
我想过设置一个属性(让我们称之为setup.has.been.invoked),并使用它来有条件地从每个目标中调用设置,但看起来属性设置仅限于它完成的范围,所以如果在setup中,我将setup.has.been.invoked设置为true,该值仅存在于setup中 …
Java是一种流行的语言和平台,拥有庞大的生态系统.是否有C#4.0及其平台应具备的功能,以使您完全切换到C#编程?
我有两套.Set b 是的子集Set a.他们都是非常巨大的集合.我想从a中减去b,这种常见操作的最佳实践是什么?我写过很多这样的代码,我觉得它不高效.你有什么想法?
伪代码:(这不是Java API).
for(int i = 0 ; i < a.size(); i++) {
for (int j=0 ; j < b.size() ;j++) {
// do comparison , if found equals ,remove from a
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我想找一个算法,不仅适用于Sets,也适用于Array.
编辑:这里的Set不是JAVA API,它是一个数据结构.所以我不在乎Java API是否有一个removeAll()方法,我想找到这个问题的常见解决方案,我在使用Javascript和Actionscript时遇到了很多这样的问题.
所以我今天在.classpath文件(eclipse文件)中看到了这一行
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
我知道*.java任何java文件,但它**/之前做了什么?是否包含每个子文件夹src/main/java?
我正在尝试使用ThreadLocal为预先存在的非线程安全类提供线程安全性,但遇到问题.似乎没有执行隔离 - 线程仍然共享静态,而不是每个线程的本地.
我相信我的用法几乎与此StackOverflow问题中SimpleDateFormatter描述的示例本地化完全平行,但它并没有按照我希望的方式运行.
我所希望的是,那些使用过它的人会指出我必须做出的令人震惊的无知错误......所以我想我的问题是:你能发现我在这里做错了什么吗?
这是我的简单课程:
public class SimpleClassWithStaticMembers {
private static String theStaticString =
"StaticStringInClassWithStaticMember";
public void setTheStaticString (String val) {
SimpleClassWithStaticMembers.theStaticString = val;
}
public String getTheStaticString () {
return SimpleClassWithStaticMembers.theStaticString;
}
}
Run Code Online (Sandbox Code Playgroud)
这是创建threadlocal实例的线程类SimpleClassWithStaticMembers:
public class SimpleTesterThread extends Thread {
private void showMsg (String msg) {
System.out.println (msg);
System.out.flush();
}
public SimpleTesterThread (String threadId) {
super(threadId);
}
public void run() {
try { Thread.sleep(2000); } catch (InterruptedException ex) { } …Run Code Online (Sandbox Code Playgroud) java ×7
eclipse ×2
ant ×1
c# ×1
class-design ×1
classpath ×1
exception ×1
file-io ×1
interface ×1
javascript ×1
junit ×1
jvm ×1
performance ×1
singleton ×1
templates ×1