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?
{
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?
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
这里似乎并没有写错,字母拆分String字段,保存到List
这句话看lz打算以空格 把几个单词分开吧?
恩,我也觉得,不过他的代码实现是:PriorityQueue容器存放单个字母的String类型,所以打印出来是单个的...因为他用的是split("");
如果是split(" "),就是楼上所说的了...