简体   繁体   English

如何在java中连接2个没有+ concat()和StringBuffer的字符串

[英]How to concat 2 string without + concat() and StringBuffer in java

import java.util.ArrayList;

public class ConcatString {

public static void main(String[] args) {
        // TODO Auto-generated method stub

    ArrayList list=new ArrayList();

    String[] str={"Hello","World!!!!","Java"};
    for(int i=0;i<str.length;i++)
    {
        list.add(str[i]);
    }
    for(int i=0;i<str.length;i++)
    {
        System.out.print(list.get(i));
    }
}

Is this the right approach since i am new to java? 这是正确的方法,因为我是java新手吗? Concat using no inbuiltin functions or + or StringBuffer...Its an interview question Concat不使用inbuiltin函数或+或StringBuffer ......这是一个面试问题

If your string array is large, you want to use StringBuilder , because using the += string concatenation is inefficient due to Java String immutability. 如果你的字符串数组很大,你想使用StringBuilder ,因为使用+=字符串连接由于Java字符串不变性而效率低下。

String[] str={"Hello","World!!!!","Java"};
StringBuilder sb = new StringBuilder();
for(String s : str)
{
    sb.append(s);
}
System.out.println(sb.toString());

Like this : 像这样 :

    String[] str={"Hello","World!!!!","Java"};
    String concat ="";
    for(String s : str)
    {
        concat+=s;
    }
    System.out.println(concat);

你的目标是什么?。你只需复制字符串数组中的值并将其存储在ArrayList中。用于连接的代码。在java中使用字符串连接只需使用+运算符。如果你有简单的话,请不要使用复杂的逻辑备择方案。

I assume you can't use StringBuffer and you can't use StringBuilder either, as this wouldn't make sense otherwise. 我假设您不能使用StringBuffer,也不能使用StringBuilder,否则这没有意义。

You can concat two Strings after converting them to a char array: 将它们转换为char数组后,您可以连接两个字符串:

public String concat(String[] args){
    int length = 0;
    for (String s : args) {
        length += s.length();
    }
    char[] result = new char[length];

    int i = 0;

    for (String s : args) {
        s.getChars(0, s.length(), result, i);
        i += s.length();
    }

    return new String(result);
}

Here's how you test it: 以下是测试方法:

public void testConcat() {
    String[] s = new String[3];
    s[0] = "abc";
    s[1] = "def";
    s[2] = "ghi";
    System.out.print(concat(s));

    /*
     * Output: abcdefghi
     */
}

You could use one simple one of the following 您可以使用以下一个简单的方法

String[] str = {"Hello","World!!!!","Java"};
String concat ="";
for(String s : str)
{
    concat+=s;
}
System.out.println(concat);

Or using StringBuilder which is more efficient like this: 或者使用StringBuilder ,这样效率更高:

String[] str={"Hello","World!!!!","Java"};
StringBuilder sb = new StringBuilder();
for(String s : str)
{
    sb.append(s);
}
System.out.println(sb.toString());

You dont need Arraylist for concatenation. 你不需要Arraylist来连接。 Try the below approach 尝试以下方法

    String[] str={"Hello","World!!!!","Java"};
    StringBuilder finalString = new StringBuilder();
    for(int i=0;i<str.length;i++)
    {
        finalString.append(str[i]);
    }
    System.out.println(finalString);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM