import java.util.*;public class Test
{
public static void main(String[] args)
{
String fact = "EDUCATION SHOULD ESCHEW OBFUSCATION";
List<String> strings = Arrays.asList(fact.split("")); Iterator<String> iter = strings.iterator();
while(iter.hasNext())
{
System.out.print(iter.next()+" ");
} System.out.println(); PriorityQueue<String> stringPQ = new PriorityQueue<String>(strings); while(stringPQ.peek()!=null)
{
System.out.print(stringPQ.remove()+" ");
}
}
}为什么打印结果是:
     E D U C A T I O N   S H O U L D   E S C H E W   O B F U S C A T I O N 
       A A B C C C D D E E E F H H I I L N N O O O O S S S T T U U U W           奇怪的是第二行打印的结果
     PriorityQueue里面不是装的String么,怎么对它进行peek操作,出来的全部都是一个个的char?

解决方案 »

  1.   


    fact.split(" ")这里是不是要用空格,写错了?
      

  2.   

     List<String> strings = Arrays.asList(fact.split(""));
     PriorityQueue<String> stringPQ = new PriorityQueue<String>(strings);你把List容器里的所有元素添加到PriorityQueue容器里了
    看看你的PriorityQueue构造方法里添加了什么?-----"strings"(建议你查看下API文档)
    并且PriorityQueue容器对元素进行了自然顺序的排序...因此打印结果为:
      A A B C C C D D E E E F H H I I L N N O O O O S S S T T U U U 
      

  3.   


    这里似乎并没有写错,字母拆分String字段,保存到List
      

  4.   

    从"PriorityQueue里面不是装的String么,怎么对它进行peek操作,出来的全部都是一个个的char?"
    这句话看lz打算以空格 把几个单词分开吧?
      

  5.   


    恩,我也觉得,不过他的代码实现是:PriorityQueue容器存放单个字母的String类型,所以打印出来是单个的...因为他用的是split("");
    如果是split(" "),就是楼上所说的了...
      

  6.   

    List<String> strings = Arrays.asList(fact.split(""));以空格分开,貌似你少打了个空格...