日期:2014-05-20  浏览次数:20690 次

有关PriorityQueue(很奇怪)
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