- Java code
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?
------解决方案--------------------------------------------------------
- Java code
fact.split(" ")
------解决方案--------------------------------------------------------
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