2011-12-25 69 views
0

我想颠倒arraylist中的字符串的一些内容,我想知道是否可以使用标准类[.reverse()。toString()特别]。例如,我在他们下面的条目的ArrayList:arraylist字符串反转

mySuperArray=[the cost of apple is USD2, the cost of oranges are USD1.50] 

,什么编号想是一些东西,上面的数组中逆转这些字符串:像:

hArray=[2DSU si elppa fo tsoc eht, etc..] 

我使用的是什么此时类似于:

ArrayList<String> hArray= new ArrayList<String>(); 
    hArray = new StringBuffer(mySuperArray).reverse().toString(); 

其中,mySuperArray的定义方式与hArray相同。

但我在这个阶段得到一个编译错误:

cannot find symbol 
    symbol : constructor StringBuffer(java.util.ArrayList<java.lang.String>) 
    location: class java.lang.StringBuffer 
    hArray = new StringBuffer(mySuperArray).reverse().toString(); 

为什么我得到这个编译错误?什么可能是错的? 对不起,如果这个问题是一个相当新手的问题。

回答

1

错误是你不能使用构造函数StringBuffer(ArrayList)。您可以在线参考Java文档以查看可以使用哪些构造函数。 http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuffer.html(这是Java 1.5)。所以,你可以使用的最接近的构造函数是StringBuffer(String)。

 
ArrayList hArray= new ArrayList(); 
for(String s :mySuperArray){ 
    hArray.add(new StringBuffer(s).reverse().toString()); 
} 
+0

噢..这基本上是做戴夫牛顿说的。 :) – Neo 2011-12-25 18:41:42

+0

感谢这个Neo。这基本上解释了它。但是,当我这样做时,出现一个奇怪的编译错误,说“file.java使用未经检查或不安全的操作。注意:使用-Xlint重新编译:未检查细节。”我从来没有见过这个错误,并且基本的谷歌搜索似乎没有透露很多。任何想法,为什么我得到这个编译错误? – AJW 2011-12-25 18:50:39

+0

好的,我明白了。基本上需要定义数组是字符串类型,即非常感谢Neo和Dave Newton! – AJW 2011-12-25 18:52:30

2

没有采用ArrayList的StringBuffer构造函数 - 它意味着什么?

创建一个新列表,迭代原始内容,将每个字符串的反转添加到新列表中。或者,用相反的方式替换每个列表项。 (不作为“功能”。)

+0

由于戴夫的帮助! – AJW 2011-12-25 18:52:46

0
public static void main(String[] args) throws IOException, ParseException, InterruptedException { 
     ArrayList<String> obj = new ArrayList<String>(); 
     obj.add("A"); 
     obj.add("B"); 
     obj.add("C"); 
     obj.add("D"); 
     obj.add("E"); 
     System.out.println("Entered :: "+obj); 
     for(int i=obj.size()-1; i>=0; --i){ 
      System.out.println("Values :: "+obj.get(i)); 
      obj.add(obj.get(i)); 
      obj.remove(i); 
     } 
     System.out.println("Reversed :: "+obj); 
}