如何在堆栈对象中搜索一对的值?
How to search if the value of a pair in in a stack object?
我有一堆 Pair,我想看看我的堆栈是否包含特定值,例如,
private Stack<Pair<String key, String value>> store = new Stack<>();
store.push("cookie", "milk");
store.push("cookie", "white");
store.push("cookie", "triple");
store.push("pie", "apple");
我想根据我的堆栈检查它是否包含“白色”,而不是弹出所有内容。如果它包含白色,那么我的方法与不包含白色的方法不同;价值观有优先权。比如,如果它包含白色,则执行 x,否则执行 y。
我知道 Stack 中有一个方法 class search(Object O)
,其中 returns 堆栈中的位置如果它包含它,或者 -1 如果它不包含但是,我不确定如何使用 Pair 来做到这一点。我必须做 store.search("cookie", "white"),还是只能是“white”值?
嗨,伙计,我尝试了你的例子,发现 java 中没有 Pairs 的默认实现,所以我搜索并发现这个 class 似乎可以完成这项工作:
然后我使用以下代码测试了您的示例:
private static Stack<Pair<String, String>> store = new Stack<>();
public static void main(String[] args){
store.push(Pair.createPair("cookie", "milk"));
store.push(Pair.createPair("cookie", "white"));
store.push(Pair.createPair("cookie", "triple"));
store.push(Pair.createPair("pie", "apple"));
store.search(Pair.createPair("cookie", "white"));
}
我发现的唯一重要的事情是你的 Pair 实现需要有一个 equals 实现,否则搜索功能将不起作用。
您似乎在创建一对对象,然后将其插入到散列中。我会尝试
store.search("white");
但是,要搜索包含对象的堆栈,您可能需要构造一个包含“cookie”和“white”的对象对来搜索包含值而不是实际值本身的对象。
我必须问,您使用堆栈而不是映射或 table 来存储密钥对值是有原因的吗?
我有一堆 Pair
private Stack<Pair<String key, String value>> store = new Stack<>();
store.push("cookie", "milk");
store.push("cookie", "white");
store.push("cookie", "triple");
store.push("pie", "apple");
我想根据我的堆栈检查它是否包含“白色”,而不是弹出所有内容。如果它包含白色,那么我的方法与不包含白色的方法不同;价值观有优先权。比如,如果它包含白色,则执行 x,否则执行 y。
我知道 Stack 中有一个方法 class search(Object O)
,其中 returns 堆栈中的位置如果它包含它,或者 -1 如果它不包含但是,我不确定如何使用 Pair 来做到这一点。我必须做 store.search("cookie", "white"),还是只能是“white”值?
嗨,伙计,我尝试了你的例子,发现 java 中没有 Pairs 的默认实现,所以我搜索并发现这个 class 似乎可以完成这项工作:
然后我使用以下代码测试了您的示例:
private static Stack<Pair<String, String>> store = new Stack<>();
public static void main(String[] args){
store.push(Pair.createPair("cookie", "milk"));
store.push(Pair.createPair("cookie", "white"));
store.push(Pair.createPair("cookie", "triple"));
store.push(Pair.createPair("pie", "apple"));
store.search(Pair.createPair("cookie", "white"));
}
我发现的唯一重要的事情是你的 Pair 实现需要有一个 equals 实现,否则搜索功能将不起作用。
您似乎在创建一对对象,然后将其插入到散列中。我会尝试
store.search("white");
但是,要搜索包含对象的堆栈,您可能需要构造一个包含“cookie”和“white”的对象对来搜索包含值而不是实际值本身的对象。
我必须问,您使用堆栈而不是映射或 table 来存储密钥对值是有原因的吗?