在AsyncTask中,如何将数据从doInBackground() "即时 "传递到主用户界面,而不是在每个循环之后?(BufferedReader)
edit1: 我确实更改了代码,以便更新在段循环内完成.但是,没有变化.在下面的代码中显示了这一点.另外,在OnProgressupdate()上删除了其他无关线. 在下面的代码中显示. 请像教业余一样回答. 我正在将数据从doinbackground()传递到当前的主要UI.有用.但是,这很慢. 我想显示"即时"结果,而不是在循环完成之后.但是,这就是编写代码的方式,但是,如果循环运行100次,我只能在100次迭代完成后一次获得结果.这很奇怪.我希望每次迭代后的结果输出.如何实现这一目标. 现在; protected Void doInBackground(Void... params) { try { //bunch of code for(int k=x1[3];k
0 2024-02-13
编程技术问答社区
在安卓系统中删除html标签
我在xml feed下面遵循: Touch, tap, flip, slide! You don't just read Books, you experience it. 在这里我必须显示 的描述 触摸,点击,翻转,滑梯!你没有39.读书,你会遇到它. 在这里我处理了解析器,例如: public static String removeHTML(String htmlString) { // Remove HTML tag from java String String noHTMLString = htmlString.replaceAll("\\", ""); // Remove Carriage return from java String noHTMLString = noHTMLString.replaceAll("\r", "
0 2024-01-31
编程技术问答社区
StringBuffer和StringBuilder中的警告
我有一个弦乐器在室外初始化,以循环循环,并且内部循环我正在加入一些字符串. 我得到警告 'StringBuffer StringBuffer'可以声明为'StringBuilder' 和 字符串串联作为'stringBuilder.append()'call 的参数 然后,我将该StringBuffer更改为StringBuilder,因为它比StringBuffer快.现在,我收到警告 字符串串联作为'stringBuilder.append()'call 的参数 示例代码: public static String stringConcat(String[] words) { StringBuffer stringBuffer = new StringBuffer(); for (String word : words) { stringBuffer.append(word).append(" ");
4 2024-01-30
编程技术问答社区
replaceAll不替换字符串
我希望文本"替代"可以用我的弦乐器符号替换.当我打印符号时,它是一个有效的字符串.当我打印查询时,它仍然具有文本替换而不是符号.为什么? private String buildQuery(){ String query = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(REPLACEME)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback="; deserializeQuotes(); StringBuffer symbols = new StringBuffer(); for(int i = 0; i
4 2024-01-28
编程技术问答社区
这段简单的代码的复杂性是什么?
我从我拥有的电子书中粘贴了此文本.如果O(n 2 ),它表明了复杂性,并且还为其提供了解释,但是我看不到. 问题:此代码的运行时间是什么? public String makeSentence(String[] words) { StringBuffer sentence = new StringBuffer(); for (String w : words) sentence.append(w); return sentence.toString(); } 书给出的答案: o(n 2 ),其中n是句子中的字母数.原因是:每次你 将字符串附加到句子中,您创建一个句子的副本,然后通过所有字母运行 如果您每次都必须在 循环,至少循环n次,这会给您一个O(n 2 )运行时间.哎呀! 有人可以更清楚地解释这个答案吗? 解决方案 这似乎是一个误导的问题,因为我刚刚读过那本书.书中的这一部分是错别字!这是上下文: ==========
2 2023-10-21
编程技术问答社区
为什么使用StringBuilder?StringBuffer既可以处理一个线程,也可以处理多个线程?
假设我们的应用程序只有一个线程.我们正在使用StringBuffer那是什么问题? 我的意思是,如果StringBuffer可以通过同步处理多个线程,那么与单线线程一起使用的问题是什么? 为什么使用StringBuilder? 解决方案 StringBuffers是线程安全,这意味着它们具有控制访问的同步方法,因此只有一个线程一次可以一次访问StringBuffer对象的同步代码.因此,通常在多线程环境中使用多个线程可能试图同时访问相同的StringBuffer对象. StringBuilder's访问不会同步,因此它不是线程安全.通过不同步,StringBuilder的性能可以比StringBuffer更好.因此,如果您在单线程环境中工作,使用StringBuilder而不是StringBuffer可能会导致性能提高.其他情况也是如此,例如StringBuilder Local变量(即,方法中的变量),其中只有一个线程将访问StringBuilder对象.
8 2023-10-13
编程技术问答社区
将多行JTextArea写入txt文件
所以我有一个用于用户输入的JTextArea,然后当他们单击一个按钮时,它将其写入文本文件时,我同时将setLineWrap>和setWrapStyleWord设置为true true./p> 我想以出现在文本框中的确切方式写入文本文件. 我试图在String上执行replace("\n", System.getProperty("line.separator")) replace("\n", System.getProperty("line.separator")),持有JTextArea的内容,但前提并撞到一条线的末端,因此它跳到其下方的线,replace不起作用. 我还尝试使用StringBuffer,我计算了几个字符在线上,然后在每行末端运行inserting inserting新行,所以对于第一行,我会添加它在90位置,180的第二行,第三行270等等.但是我很快意识到这在所有情况下都没有起作用,因为某些字符比其他字符小,例如,您可以在一行中更适合j的j. 我想
20 2023-10-11
编程技术问答社区
删除文件夹中的部分文件名
以下代码有效,但我的问题是控制台输出正确显示: 3-M-ALABAMA-SUIQUARTER2 3-M-ALABAMA-SUIQUARTER2 3-M-ALABAMAW-22017 3-M-ALABAMAW-22017 上面的输出表明我的索引为-2017,但是当在文件夹中更改实际文件名时,一些文件名是跳过的.例如 正性文件名:3-M-ALABAMA-SUIQUARTER2-2017200346-CD6140 控制台输出:3-M-ALABAMA-SUIQUARTER2 文件夹中的某些文件不变:3-M-ALABAMA-SUIQUARTER2-2017200346-CD6140 但是,文件夹中的某些文件具有3-M-BATTLECREEKMIW-22017-2017200346-CD619B,有些是3-M-ARLINGTONOHLOCALW-2-2017200346-CD61A8 因此,我认为当在文件更改中进行实际更改时,Java对在哪里切断了在哪里感到困惑?你能
8 2023-10-05
编程技术问答社区
stringstream->rdbuf()->pubsetbuf没有设置缓冲区。
我正在尝试使用方法PubSetBuf复制字符串对象的字符串挡板,而无需复制字符串,但它行不通.我正在遵循 StreamBuf/pubSetbuf/.这是我的示例代码: #include #include int main(int argc, char* argv[]) { std::stringstream stream("You say goodbye"); char replace[] = {"And I say hello"}; std::cout pubsetbuf(replace, 16); // Should set contents here std::cout
12 2023-10-03
编程技术问答社区
StringBuffer,何时使用StringBuilder?
可能的重复: stringBuilder and StringBuffer in Java 在StringBuffer和StringBuilder 中选择的标准 解决方案 如果您肯定使用Java 5或更高版本,并且您肯定不会在线程之间共享对象(我不记得 ever 需要这样做),StringBuilder是一个更好的赌注. 基本上,您几乎应该在可能的情况下始终使用StringBuilder,以避免毫无意义的同步.诚然,大多数VM处理无生物同步的方式非常有效,但是如果您首先不需要它... 其他解决方案 StringBuilder方法没有同步,因此当您不关心多线程零件时,可以使用它,因为它会很快. StringBuffer另一方面,其所有方法同步,因此是线程安全的. 您可以浏览这篇文章: - stringBuilder and StringBuffer之间的差异 P>
24 2023-10-03
编程技术问答社区
为什么StringBuffer有toStringCache而StringBuilder没有?
在JDK 8中,StringBuffer类具有toStringCache,而StringBuilder则没有. /** * A cache of the last value returned by toString. Cleared * whenever the StringBuffer is modified. */ private transient char[] toStringCache; 但是为什么? 我能想到的一个可能的原因是StringBuffer已经同步,因此可以更轻松地实现缓存. 或从历史上使用StringBuffer是通过这种方式实现的,因此旧代码在很大程度上取决于此功能? 给定现代JVM带有逃生分析和有偏见的锁定,差异不再相关了吗? 解决方案 可能有助于考虑历史背景. StringBuilder是用Java 5引入的,因为它已被认可,StringBuffer不适合其实际用例. 新引入的StringBuilder是为在
20 2023-10-03
编程技术问答社区
StringBuffer已经过时了?
在"有效Java"一书中,乔什·布洛克(Josh Bloch)说 StringBuffer在很大程度上已过时,应由 非同步实现" StringBuilder" . 但是,根据我的经验,我仍然看到StringBuffer类的广泛使用.为什么现在要过时使用StringBuffer类,为什么除非由于非同步而导致的性能提高, 为什么要优先使用StringBuilder? 解决方案 它已经过时了,因为Java 1.5 上的新代码通常应该使用StringBuilder - 非常非常很少需要在线程中构建字符串 - 安全的方式,为什么要支付同步成本? 我怀疑您看到的StringBuffer大部分属于: 在Java 1.5之前写 为保持与较旧JDK的兼容性而写信 由不了解StringBuilder 的人撰写 由不知道StringBuilder 的工具自动化 其他解决方案 并非每个人都像您一样广泛地读取: - ) 我只是在开玩笑.人们一直在复制代
8 2023-10-03
编程技术问答社区
字符串与Stringbuffer作为HashMap的键
我试图理解为什么使用用作哈希玛普键时的字符串和字符串布置/字符串挡板对待不同.让我对以下插图更清晰地混淆: 示例#1,使用字符串: String s1 = new String("abc"); String s2 = new String("abc"); HashMap hm = new HashMap(); hm.put(s1, 1); hm.put(s2, 2); System.out.println(hm.size()); 上方代码摘要打印'1'. 示例#2,使用StringBuilder(或StringBuffer): StringBuilder sb1 = new StringBuilder("abc"); StringBuilder sb2 = new StringBuilder("abc"); HashMap hm = new HashMap(); hm.put(sb1, 1); hm.put(sb2, 2); System.out.printl
10 2023-10-03
编程技术问答社区
字符串是不可变的,这意味着我永远不应该使用+=和StringBuffer?
字符串是不变的,意思是,一旦创建它们就无法更改. 那么,这是否意味着如果您用 +=附加内容,则比创建stringbuffer并附加了文本? ,它将需要更多的内存. 如果您使用 +=,则每次必须保存在内存中时会创建一个新的"对象",不是吗? 解决方案 是的,您每次使用 +=创建一个新对象.但是,这并不意味着要做的事情总是错误的.这取决于您是否希望该值作为字符串,还是您只是要使用它来进一步构建字符串. 如果您实际上想要作为字符串的结果,那么您最好只使用字符串串联即可.但是,如果您真的要(例如)循环并附加另一个字符串,另一个等等 - 仅需要在末端作为字符串,那么StringBuffer/StringBuilder就是必需的.的确,循环确实是StringBuilder在字符串串联上付出的回报 - 5甚至10个直接串联的性能差异将很小,但是对于数千个,它会变得更糟 - 基本上是因为您得到O(N 2 2 )复杂性具有串联的复杂性与弦乐器的复杂性. 在Java 5及更高版
18 2023-10-03
编程技术问答社区
什么是 "StringBuilders不是线程安全的"?
我已经阅读了一些有关Java编程语言中String和StringBuilder利弊的文章.在其中一篇文章中,作者提到: StringBuilder 不是 thread-safe ,因此在多线程中使用 StringBuffer . 不幸的是,我无法理解它的含义.您能解释一下String,StringBuilder和StringBuffer之间的区别,尤其是在"线程安全"的背景下. 如果您可以用代码示例描述. 解决方案 如果多个线程正在修改StringBuilder的同一实例,则结果可能是出乎意料的 - 即可能会丢失某些修改.这就是为什么您应该在这种情况下使用StringBuffer的原因.但是,如果每个线程StringBuilder实例只能通过一个线程修改,则最好使用StringBuilder,因为它会更有效(线程安全带有性能成本). 其他解决方案 如果多个线程尝试更改StringBuilder对象值,则结果将很奇怪.请参见下面的示例 private
6 2023-10-03
编程技术问答社区
在Java中,String和StringBuffer有什么区别?
Java中的字符串和StringBuffer有什么区别? 字符串有最大尺寸吗? 解决方案 String用于操纵无法更改的字符串(仅读取和不可变). StringBuffer用于表示可以修改的字符. 表演明智,StringBuffer执行串联时的速度更快.这是因为当您加入String时,您每次都会(内部)创建一个新对象,因为String是不变的. 您也可以使用StringBuilder,它类似于StringBuffer,除非它没有同步.其中任何一个的最大尺寸是Integer.MAX_VALUE(2 31 - 1 = 2,147,483,647)或最大堆大小除以2(请参阅在这里. 其他解决方案 a String是不可变的,即当创建时,它永远不会改变. a StringBuffer(或它的非同步表亲StringBuilder)当您需要逐件构造弦乐时,而无需沿途构造大量小String s的弦乐. 两者的最大长度是integer.max_valu
10 2023-10-03
编程技术问答社区
StringBuilder和StringBuffer之间的区别
StringBuffer和StringBuilder之间的主要区别是什么? 决定其中任何一个时是否有任何性能问题? 解决方案 StringBuilder 不是. 其他解决方案 StringBuilder StringBuilder 比 StringBuffer synchronized. 这是一个简单的基准测试: public class Main { public static void main(String[] args) { int N = 77777777; long t; { StringBuffer sb = new StringBuffer(); t = System.currentTimeMillis(); for (int i = N; i --> 0 ;) { sb.append
10 2023-10-03
编程技术问答社区
StringBuffer的equals方法会比较内容吗?
可能的重复: 将StringBuffer内容与等价进行比较 StringBuffer s1= new StringBuffer("Test"); StringBuffer s2 = new StringBuffer("Test"); if(s1.equals(s2)) { System.out.println("True"); } else { System.out.println("False"); } 为什么该代码打印" false"? 解决方案 请参阅编辑:我假设我们在Java世界中. P.S.如果您处于单线读取环境中,或者您的缓冲区隔离到一个线程中,则应该真正使用 stringbuilder 代替 stringBuffer . 其他解决方案 StringBuffer等于检查内容.它使用默认的"浅equals",比较了它从java.lang.object. 比较其引用
110 2023-10-01
编程技术问答社区
做��+�� 在字符串连接中使用会影响效率吗?
我曾在Java中使用String,StringBuilder和StringBuffer. 从效率的角度来看,我想到了这个问题. 在字符串串联中使用"+"会影响效率吗? 解决方案 是的,但是大多数时候都不重要. 使用'+'用于字符串常数是最有效的,因为编译器可以执行串联. 如果您要连接两个字符串,则concat方法是最有效的,因为它避免使用StringBuilder. 除了向后兼容以外,几乎没有一个充分的理由使用StringBuffer. StringBuilder或StringWriter是一个更好的选择.但是,与JDK中的StringBuilder相比,它仍然更频繁地使用:P stringBuffer死了,Long Live stringBuffer 其他解决方案 如果您在单个语句中串联,那么编译器/JIT编译器将使用StringBuilder. 自动对其进行优化,这没关系. so "a"+b+"c"将被优化为(new StringBui
0 2023-10-01
编程技术问答社区
java中可变字符串和不可变字符串的区别是什么
据我所知, 可以更改一个可变的字符串,并且 不变的字符串无法更改. 在这里,我想更改字符串的值, String str="Good"; str=str+" Morning"; 和其他方式是 StringBuffer str= new StringBuffer("Good"); str.append(" Morning"); 在这两种情况下,我都试图改变str的值.谁能告诉我,两种情况有什么区别,并给我清晰的可变和不变的物体的图片. 解决方案 案例1: String str = "Good"; str = str + " Morning"; 在上面的代码中,您创建3 String对象. "好"它进入字符串池. "早晨"也进入 string池. "早上好"是通过串联"好"和"早晨"创建的.这个家伙继续进行堆. 注意:字符串是总是不变的.没有,可变的字符串之类的东西. str只是参考,最终指向"早安".您实际上是,不是在1对象上
22 2023-10-01
编程技术问答社区