相关疑难解决方法(0)

在matcher.replace方法中,如何限制更换次数?

matcher.replace方法中,只有: replaceFirst()replaceAll()两种方法

我想限制更换3次,怎么办?

例:

String content="aaaaaaaaaa";
Run Code Online (Sandbox Code Playgroud)

我想得到的结果是: "bbbaaaaaaa"

我的代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class T1 {
    public static void main(String[] args) {
        String content="aaaaaaaaaa";
        Pattern pattern = Pattern.compile("a");

        Matcher m=pattern.matcher(content);
        if(m.find()){
            String result=m.replaceFirst("b");
            System.out.println(result);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

java regex

2
推荐指数
1
解决办法
2074
查看次数

Java:使用Synchrozined集合的经验法则?

我正在阅读关于使用StringBuilder与StringBuffer的Stackoverflow 线程.

底线似乎是两个集合,不同的是一个StringBuffer同步同样的事情,是线程安全的,确实有点少以及在性能上相比StringBuilder的不属于那些东西.

有人提到了ArrayList和Vector之间存在类似关系的方式.

除非我有意识地创建多个线程,否则不使用同步集合(或其他任何东西)是一个好的(安全的)经验法则吗?

换句话说,我收到消息"尽可能使用新的StringBuilder.",我想知道的是,我怎么能确定它是否可能?

我是否安全使用非同步集合,只要我不故意创建新线程?

java collections synchronize

2
推荐指数
1
解决办法
211
查看次数

为什么java有StringBuilder或StringBuffer?

String和(StringBuilderStringBuffer)之间存在许多差异,例如可变性和许多字符串操作

可能这个问题看起来有点傻,但我想知道编程范式.

我想问一下,为什么Java实现了另一个类,StringBuilder或者StringBuffer像数据结构那样String.为什么他们自己没有给出这些功能String.

为什么不把String本身线程安全的,或提供一些额外的功能StringBuilderStringBuffer有?

java string stringbuilder stringbuffer

2
推荐指数
1
解决办法
143
查看次数

StringBuffer vs StringBuilder

我正在学习算法实现课程.我的老师提到了StringBuffer和StringBuilder,他说StringBuffer比StringBuilder更安全,因为在线程方面.真的吗?如果是这样,那意味着什么?我查了一下这个问题,很多答案都提到了同步.任何人都可以解释这意味着什么,以及如何使StringBuffer比StringBuilder更安全?

java algorithm stringbuilder synchronized stringbuffer

2
推荐指数
1
解决办法
4027
查看次数

1
推荐指数
2
解决办法
2106
查看次数

StringBuilder ArrayIndexOutOfBoundsException

public class Log {

    private static StringBuilder log = new StringBuilder();

    private static StringBuilder getLog() {

        return log;

    }


    public static void addToLog(String id, String name, String field, String operator, String value, String bValue) {

        Calendar calendar = Calendar.getInstance();
        String currentTime = formatter.format(calendar.getTime());
        getLog().append(currentTime); // line 114

    }

}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

[java] Exception in thread "Thread-5" java.lang.ArrayIndexOutOfBoundsException 
[java]     at java.lang.String.getChars(String.java:863) 
[java]     at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:416) 
[java]     at java.lang.StringBuilder.append(StringBuilder.java:132) 
[java]     at com.retroficiency.system.Log.addToMatchingLog(Log.java:114)
Run Code Online (Sandbox Code Playgroud)

这种方法通常工作正常,但我们遇到了这个随机错误,我无法弄清楚为什么.有一个单独的方法可以将日志刷新到文件并使用以下方法清除它:

getLog().delete(0, getMatchingLog().length());
Run Code Online (Sandbox Code Playgroud)

我不认为这是一个Java bug?它变得太长了吗?谢谢你的帮助!

java logging stringbuilder

0
推荐指数
1
解决办法
2647
查看次数

Java String Buffer

StringBuffer如何在内部处理字符串?我尝试运行下面的例子并得到答案为"字符串是不相等的".

据我所知,如果两个字符串具有相同的值,则equals()返回true.那么在这种情况下发生了什么?

class StringBufferTest {

public static void main(String[] args) {
    String newString = "HelloWorld";
    StringBuffer buffer = new StringBuffer(newString);

    if (buffer.equals(newString)) {
        System.out.println("Strings are equal");
    } else {
        System.out.println("String are unequal");
    }

  }
}
Run Code Online (Sandbox Code Playgroud)

java

0
推荐指数
1
解决办法
243
查看次数

为什么StringBuilder访问似乎是同步的?

我想知道StringBuilder和StringBuffer类之间的区别以及它们的实际用途.所以,我编写了2个代码片段,其中我同时产生了3个线程,这些线程使用了StringBuilder和StringBuffer对象.

当我运行代码时,我希望所有3个线程在StringBuilder的情况下同时运行,并且在StringBuffer的情况下以同步方式运行.但在两种情况下,它们以同步的方式运行.那么StringBuffer类的用途是什么?:confused:

(对于String对象,所有3个线程同时运行).我将分享代码片段供您参考.如果我在理解多线程本身的概念时错了,请纠正我.还请,还要更正代码.

// StringBuilder...

public class MultiTread implements Runnable{
private StringBuilder name;
public MultiTread(StringBuilder string){
name=string;
}

public void run(){
for(int i=0; i<=10; i++){
System.out.println(name.append(i));
}
}
public static void main(String[] args){
Thread th = new Thread(new MultiTread(new StringBuilder("thread1:")));
Thread th1 = new Thread(new MultiTread(new StringBuilder("thread2:")));
Thread th2 = new Thread(new MultiTread(new StringBuilder("thread3:")));

th.start();
th1.start();
th2.start();
}
}

..................

//StringBuffer...

public class MultiTreadBuf implements Runnable{
private StringBuffer name;
public MultiTreadBuf(StringBuffer string){
name=string;
}

public void run(){
for(int i=0; i<=10; …
Run Code Online (Sandbox Code Playgroud)

java multithreading

0
推荐指数
1
解决办法
239
查看次数

将Enum值转换为逗号分隔String的最有效方法

我有一个java类,我在其中存储一个枚举.(显示在这个问题的底部)在这个枚举中,我有一个名为toCommaSeperatedString()的方法,它返回一个逗号分隔的枚举值String.我在这里阅读了一些关于性能的信息后,我正在使用StringBuilder .

我将这个枚举值转换为commaSeperatedString的方式是这样做的最有效方式,如果是这样,那么在String的最后一个字符处删除额外逗号的最有效方法是什么?

例如,我的方法返回,123, 456,但我更喜欢123, 456.如果我想返回,PROPERTY1, PROPERTY2我可以很容易地使用Apache Commons库StringUtils.join(),但是,getValue当我迭代String数组时,我需要通过调用方法来降低一级.

public class TypeEnum {
    public enum validTypes {
        PROPERTY1("123"),
        PROPERTY2("456");

        private String value;

        validTypes(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }

        public static boolean contains(String type) {
            for (validTypes msgType : validTypes.values()) {
                if (msgType.value.equals(type)) {
                    return true;
                }
            }
            return false;
        }

        public static String toCommaSeperatedString() {
            StringBuilder commaSeperatedValidMsgTypes = new StringBuilder();
            for(validTypes …
Run Code Online (Sandbox Code Playgroud)

java string enums

0
推荐指数
1
解决办法
3310
查看次数

在使用StringBilder的StringBuilder时,特别之处

可能重复:
Java中的StringBuilder和StringBuffer

我想知道StringBuilder和StringBuffer之间的区别.在StringBuffer中,它自动分配16个字符.当我们添加一个字符串"hello"时,它的容量增加到21.可以有人澄清我的怀疑吗?

java stringbuilder stringbuffer

-1
推荐指数
1
解决办法
645
查看次数

标题案例中的格式名称Java帮助吗?

所以我必须写一个java代码:

  • 输入名称
  • 标题案例中的格式名称
  • 输入第二个名字
  • 标题案例中的格式名称
  • 按字母顺序显示它们

我知道Java Character类有方法isLowerCase(),isUpperCase,toLowerCase()和toUpperCase(),你可以用它们逐个字符地查看字符串.如果第一个字符是小写,则将其转换为大写,对于每个后续字符,如果字符为大写,则将其转换为小写.

问题是我如何检查每封信?它应该包含什么样的变量和字符串?你能帮忙吗?

java string title-case

-1
推荐指数
1
解决办法
2万
查看次数