remove 函数如何处理包含字符串值的最小优先级队列?
How does remove function work with min priority queues that contain string values?
我知道如果我从最小优先级队列中删除一个元素,它会先删除最小的元素。比如我有一个最小优先级队列,里面有一堆int值,比如1, 2, 3
,如果我调用remove函数,它会移除1.
如果我有一堆字符串值的最小优先级队列怎么办?例如,如果我有一个 "Tom", "Moe", "Brandon", "Alexander"
的优先级队列,它会根据字典排序只删除最小值吗?如果是这样,我想它会先删除 "Moe"
。然后,如果我再次调用 remove
,它将删除 "Tom"
.
我的理解对吗?下面的伪代码详细说明了我正在查看的确切代码。
public interface Container<T>
{
void insert(T x); // insert x into Container
T remove(); // remove item from Container
}
public class C<T> implements Container<T>
{
public C() { /* constructor */ }
public void insert(T x) { /* insert x into C */ }
public T remove() { /* remove item from C */ }
//.. other methods
}
Here is a program segment that uses class C above:
Container<String> words = new C<String>();
String w1 = "Tom";
String w2 = "Dick";
String w3 = "Harry";
String w4 = "Moe";
words.insert(w1);
words.insert(w2);
words.insert(w3);
words.insert(w4);
String str = words.remove(); // remove
str = words.remove(); // remove again
System.out.println(str);
PriorityQueues通常接受Comparator in order to determine how to sort the values inside. If you don't provide one, then Java uses the default comparison method:比如1小于2,"A"小于"B"。
因此在您的示例中,默认的词典顺序为:Alexander、Brandon、Moe、Tom(如字母表)。另请注意 "a" 小于 "A",因此大小写也很重要。
我知道如果我从最小优先级队列中删除一个元素,它会先删除最小的元素。比如我有一个最小优先级队列,里面有一堆int值,比如1, 2, 3
,如果我调用remove函数,它会移除1.
如果我有一堆字符串值的最小优先级队列怎么办?例如,如果我有一个 "Tom", "Moe", "Brandon", "Alexander"
的优先级队列,它会根据字典排序只删除最小值吗?如果是这样,我想它会先删除 "Moe"
。然后,如果我再次调用 remove
,它将删除 "Tom"
.
我的理解对吗?下面的伪代码详细说明了我正在查看的确切代码。
public interface Container<T>
{
void insert(T x); // insert x into Container
T remove(); // remove item from Container
}
public class C<T> implements Container<T>
{
public C() { /* constructor */ }
public void insert(T x) { /* insert x into C */ }
public T remove() { /* remove item from C */ }
//.. other methods
}
Here is a program segment that uses class C above:
Container<String> words = new C<String>();
String w1 = "Tom";
String w2 = "Dick";
String w3 = "Harry";
String w4 = "Moe";
words.insert(w1);
words.insert(w2);
words.insert(w3);
words.insert(w4);
String str = words.remove(); // remove
str = words.remove(); // remove again
System.out.println(str);
PriorityQueues通常接受Comparator in order to determine how to sort the values inside. If you don't provide one, then Java uses the default comparison method:比如1小于2,"A"小于"B"。
因此在您的示例中,默认的词典顺序为:Alexander、Brandon、Moe、Tom(如字母表)。另请注意 "a" 小于 "A",因此大小写也很重要。