import java.util.*;
public class PriorityQueueTest {
public static void main(String[]args)
{
PriorityQueue<GregorianCalendar> pq=new PriorityQueue<GregorianCalendar>();
pq.add(new GregorianCalendar(1906,Calendar.DECEMBER,9));
pq.add(new GregorianCalendar(1815,Calendar.DECEMBER,10));
pq.add(new GregorianCalendar(1903,Calendar.DECEMBER,3));
pq.add(new GregorianCalendar(1910,Calendar.DECEMBER,22));
System.out.println("Iterating over elements");
for(GregorianCalendar date:pq)
System.out.println(date.get(Calendar.YEAR));
System.out.println("Removing elments");
System.out.println(pq.remove().get(Calendar.YEAR));
}}
结果:
Iterating over elements
1815
1906
1903
1910
Removing elments
1815为什么会是这个结果呢,书上说的删除总是删除元素中优先级最小的那个元素,而怎么也不会是1815啊,还有他的遍历顺序为什么是那个顺序呢,不明白,请教。
解决方案 »
- js验证Email的合法性(非正则验证)
- 怎样在java的按钮上添加图标,并控制按钮上他的位置?
- 如何用JAVA提取文本文档的多个数据(给分贴)
- 杭州的同志们
- PreparedStatement能否实现批量操作?用addBatch()与executeBatch()方法行不行,该怎么用?
- 200分救命呀,如何能唯一获得选择的JTree的结点呀,分不够再给,过年了嘛
- 如何实现本地的两个JAVA程序同时访问一个链表,从而共享数据资源,是否需要使用API
- 为什么总是得到“Cannot load driver ‘org.gjt.mm.mysql.Driver’”
- 请问哪里有Netscape LDAP SDK呀?
- 请问tomcat与apache是什么关系? jakarta又是什么?
- 关于正则的小问题--只有一条不明白
- 对象的作用域问题
1815 就是最小的啊 GregorianCalendar比较的就是时间早的小
1815
1906
1903
1910
所以,这个类的iterator方法有声明:
不保证返回的对象有任何特定的顺序。
iteratorpublic Iterator<E> iterator() Returns an iterator over the elements in this queue. The iterator does not return the elements in any particular order. Specified by:
iterator in interface Iterable<E>
Specified by:
iterator in interface Collection<E>
Specified by:
iterator in class AbstractCollection<E> Returns:
an iterator over the elements in this queue.
这个类排序的机制基于Comparator,最小的排在前面:
The head of this queue is the least element with respect to the specified ordering.
import java.util.*;
public class MapTest {
public static void main(String[]args)
{
Map<String,Employee>staff=new HashMap<String,Employee>();
staff.put("129", new Employee("Cary Cooper"));
staff.put("144", new Employee("Amy lee"));
staff.put("112", new Employee("France"));
staff.put("149", new Employee("Harry Hacker"));
System.out.println(staff);
}
}
class Employee
{
private double salary;
private String name;
public Employee(String n)
{
this.name=n;
salary=0;
}
public String toString()
{
return "[name="+name+",salary="+salary+"]";
}
}
结果:
{144=[name=Amy lee,salary=0.0], 112=[name=France,salary=0.0], 149=[name=Harry Hacker,salary=0.0], 129=[name=Cary Cooper,salary=0.0]}同样HashMap不对元素排列,可输出结果为什么老是这个呢,为什么啊?我真的不明白。
虽然内部并不保证以任何特定的顺序进行iterater,但并不等同于“相同的数据乱序”,
这只能说明,这个类对相同的数据序列,内部组织数据的方式是稳定的,但并不是有序的。