0

我有一个包含多个条目的 ArrayList,我想颠倒顺序或字符,所以如果我的代码如下所示:

public class Test {

ArrayList<String> aa = new ArrayList<String>();

aa.add("hello");
aa.add("goodbye");

(reverse them in some way)


}

那么我希望 ArrayList 包含的是:

olleh
eybdoog

我只设法用 Collections.reverse 更改了整个 ArrayList 中条目的顺序,但这并没有达到我想要的效果。

4

4 回答 4

3

该类(可变字符串)包含一个反向操作,用于切换 StringBuilderStringBuilder字符。

int size = aa.size();
for(int i = 0; i < size; ++i)
{
    StringBuilder builder = new StringBuilder(aa.get(i));
    builder.reverse();    //reverse the StringBuilder
    aa.set(i, builder.toString());
}
于 2013-04-24T18:07:27.240 回答
1

快速而肮脏的版本 - 改变Strings原来的内部ArrayList

for(int i = 0; i < aa.size(); i++) {
    aa.set(i, new StringBuilder(aa.get(i)).reverse().toString());
}
于 2013-04-24T18:10:56.883 回答
0

这是一个线性时间实现,在适当的位置修改列表。

public void reverseStr(List<String> theArgs) {
   for(int i = 0; i < theArgs.size(); i++) {
       String s = theArgs.get(i);
       theArgs.set(i, new StringBuffer(s).reverse().toString());
   }
}
于 2013-04-24T18:12:03.100 回答
-2

像这样做:

反转字符串的最佳方法

    static void Main(string[] args)
    {
        var aa = new List<String>();

        aa.Add("hello");
        aa.Add("goodbye");

        var x = from s in aa select Reverse(s);

        foreach (var c in x)
            Console.WriteLine(c.ToString( ));

        Console.ReadLine();
    }

    public static string Reverse(string s)
    {
        char[] charArray = s.ToCharArray();
        Array.Reverse(charArray);
        return new string(charArray);
    }
于 2013-04-24T18:08:18.303 回答