草庐IT

StringBuffer

全部标签

ruby - 为什么 Ruby 没有真正的 StringBuffer 或 StringIO?

我最近读了一篇不错的post关于在Ruby中使用StringIO。不过,作者没有提到的是StringIO只是一个“I”。没有“哦”。你不能这样做,例如:s=StringIO.newsshouldbe"foo\nbar"#=>reallyis''`Ruby确实需要一个StringBuffer,就像Java那样。StringBuffers有两个重要的用途。首先,它们让您测试Ruby的StringIO所做的一半输出。其次,它们对于从小部分构建长字符串很有用——Joel一遍又一遍地提醒我们,否则会非常非常慢。有好的替代品吗?的确,Ruby中的字符串是可变的,但这并不意味着我们应该始终依赖该功能

java - Readline 太慢了——还有更快的吗?

我正在使用BufferedReader和InputStreamReader从流中读取数据,以创建一个由读取器创建的长字符串。它最多超过100,000行,然后抛出500错误(服务器调用失败)。我不确定是什么问题,有没有比这种方法更快的方法?当行数为数千时它会起作用,但我正在处理大型数据集。BufferedReaderin=newBufferedReader(newInputStreamReader(newConnect.getInputStream()));StringinputLine;StringxmlObject="";StringBufferstr=newStringBuffer

StringBuffer(史上最详细)

StringBuffer是String的增强类文章目录StringBuffer是String的增强类添加删除替换插入长度StringBuffer练习题欢迎评论一起学习,如果觉得本文章对你有帮助,一键三连支持一下1.StringBuffer的直接父类是AbstractStringBuilder2.StringBuffer实现了Serializable即StringBuffer的对象可以串行化3.在父类中AbstractStringBuilder有属性char[]value,不是final在该value数组存放字符串内容,引出存放在堆中的4.StringBuffer是一个final类不能被继承5.

Java exec方法,如何正确处理流

从Java生成和使用外部进程流(IO)的正确方法是什么?据我所知,由于缓冲区大小可能有限,Java端输入流(进程输出)应该在与生成进程输入并行的线程中使用。但我不确定我是否最终需要与那些消费者线程同步,或者仅仅使用waitFor方法等待进程退出是否足够,以确保所有进程输出真的被消耗了吗?I.E是否有可能,即使进程退出(关闭它的输出流),流的java端仍然有未读数据?waitFor实际上是如何知道进程何时完成的?对于有问题的进程,EOF(关闭其输入流的Java端)发出退出信号。我目前处理流的解决方案如下publicclassApplication{privatestaticfinalSt

java - 为什么 StringBuffer 有 toStringCache 而 StringBuilder 没有?

在JDK8中,StringBuffer类有一个toStringCache,而StringBuilder没有。/***AcacheofthelastvaluereturnedbytoString.Cleared*whenevertheStringBufferismodified.*/privatetransientchar[]toStringCache;但是为什么呢?我能想到的一个可能原因是StringBuffer已经同步,因此可以更轻松地实现缓存。或者也许历史上StringBuffer是这样实现的,所以旧代码严重依赖这个特性?鉴于现代JVM具有逃逸分析和偏向锁定,这些差异是否相关?

java - 在 Java 1.7+ 上,我们是否仍需要使用 StringBuffer.append 转换 "this string"+ "should"+ "be"+ "joined"以获得最佳实践?

在Java1.7+上,我们是否仍需要使用StringBuffer.append转换“thisstring”+“should”+“be”+“joined”以获得最佳实践? 最佳答案 1)像"thisstring"+"should"+"be"+"joined"这样的常量表达式(JLS15.28)不需要StringBuilder因为它是在编译时计算成一个字符串“这个字符串应该加入”2)对于非常量表达式,编译器将自动应用StringBuilder。也就是说,"string"+var等同于newStringBuilder().append("

java - 对于长度变化很大的输入,最佳 StringBuffer 初始容量是多少?

大家下午好,我正在使用java.lang.StringBuilder存储一些字符。我不知道我要提前存储多少个字符,除了:60%的情况下,它只有(恰好)7个字符39%的时间是(大约)3500个字符1%的时间,大约是20k个字符我们如何计算应该使用的最佳初始缓冲区长度?目前我正在使用newjava.lang.StringBuilder(4000)但那只是因为我以前懒得想。 最佳答案 这里有两个因素:时间和内存消耗。该时间主要受java.lang.AbstractStringBuilder.expandCapacity()调用次数的影响。

java - 什么是 Java 中的对等类?

我发现StringBuffer被称为String的对等类。什么是同龄人? 最佳答案 首先:您必须小心使用术语“对等类”,因为在Java中它具有不同的含义:对等类是native类的“接口(interface)”。(例如C++类)(有关详细信息,请参阅其他答案)在您的情况下,该术语似乎不用于该特定上下文!将StringBuffer称为String的对等类的人显然在一般意义上使用了该词。在某种程度上,StringBuffer和String是相关的,它们都可以用于类似的目的。我想在某些用例中,它们可以被视为更广泛意义上的同行。

java - String、StringBuffer 和 StringBuilder 之间的性能和简单性权衡

您是否考虑过Java编程语言的这一变化的含义?String类被认为是一个不可变的类(这个决定是经过深思熟虑的)。但是字符串连接真的很慢,我自己对它进行了基准测试。于是StringBuffer诞生了。真的很棒的类(class),同步而且非常快。但是有些人对某些同步块(synchronizedblock)的性能成本不满意,于是引入了StringBuilder。但是,当使用String连接不多的对象时,类的不变性使其成为实现线程安全的一种非常自然的方式。当我们要管理几个String时,我可以理解StringBuffer的使用。但是,这是我的第一个问题:例如,如果您要附加10个或更少的字符串,

java - Java 中的 Set 不允许重复,但它接受具有相同参数的 StringBuffer 对象。为什么?

publicstaticvoidmain(String[]args){HashSetset=newHashSet();set.add(newStringBuffer("abc"));set.add(newStringBuffer("abc"));set.add(newStringBuffer("abc"));set.add(newStringBuffer("abc"));System.out.println(set);}输出:[abc,abc,abc,abc]在上面的代码中,我多次添加了StringBuffer("abc")的对象,Set添加了它,但Set从不添加重复项。