小编CPe*_*ins的帖子

StringBuilder与StringWriter和PrintWriter的字符串汇编

我最近遇到了一个我以前没见过的成语: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除了所有其他答案.另外,我发布了自己的答案,给出了我运行的基准测试结果,以回答其中一个答案.谢谢大家.

再次编辑事实证明,有是 …

java

54
推荐指数
5
解决办法
5万
查看次数

Eclipse中定制的新JUnit模板?

我花了几个小时寻找这个,但找不到它,所以我问.为什么在这?

我如何自定义Eclipse,以便在创建新的JUnit测试类或方法时,它包含不同的项目?对于其他来源,我只需进入Window-> Preferences,然后更改模板.

但对于JUnit来说,这似乎是不可能的.

我最近安装了MoreUnit,这似乎也没有帮助.

有指针吗?

eclipse customization junit templates

32
推荐指数
1
解决办法
5641
查看次数

您是否曾见过Java文件close()抛出异常?

有没有人见过在任何可关闭的对象上调用close方法时抛出的异常?

java file-io exception

22
推荐指数
2
解决办法
5861
查看次数

单例类如何使用接口?

我在许多地方读到单身人士可以使用接口.有些我怎么也无法理解这一点.

java singleton class-design interface

10
推荐指数
3
解决办法
3万
查看次数

有没有办法保证ant依赖只运行一次?

我的问题类似于避免重新构建先决条件,除了我的需要不涉及创建的对象,而是调用了进程,因此在那里讨论的解决方案对我来说不起作用.至少我是这么认为的 - 但我是蚂蚁的新手.

我的情况是我正在编写一组蚂蚁目标,我需要一次只执行一次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中 …

ant

7
推荐指数
2
解决办法
5079
查看次数

C#4.0以后的哪些功能必须鼓励从Java切换?

Java是一种流行的语言和平台,拥有庞大的生态系统.是否有C#4.0及其平台应具备的功能,以使您完全切换到C#编程?

c# java language-features programming-languages

6
推荐指数
3
解决办法
916
查看次数

每次执行java命令都会启动一个单独的JVM吗?

每次执行java命令都会启动一个单独的JVM吗?

java jvm

6
推荐指数
2
解决办法
446
查看次数

进行收集减法的最快方法

我有两套.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时遇到了很多这样的问题.

javascript performance actionscript-3

5
推荐指数
1
解决办法
4497
查看次数

什么**/*.java在java类路径中的含义

所以我今天在.classpath文件(eclipse文件)中看到了这一行

<classpathentry kind="src" path="src/main/java" including="**/*.java"/>

我知道*.java任何java文件,但它**/之前做了什么?是否包含每个子文件夹src/main/java?

java eclipse classpath

4
推荐指数
2
解决办法
1497
查看次数

将ThreadLocal与包含静态成员的现有类一起使用

我正在尝试使用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 multithreading

3
推荐指数
1
解决办法
1395
查看次数