gpt4 book ai didi

java - 缓存键中的通配符

转载 作者:行者123 更新时间:2023-12-01 12:36:58 24 4
gpt4 key购买 nike

我有一个场景,我向外部服务发送 3 个参数并期望得到结果。我想找到一种优雅的方式来缓存结果。

问题在于这 3 个参数之间存在层次结构。像这样的东西:

  1. 城市
  2. 街道
  3. 建筑物

我希望能够在比“城市”更低的级别上使用通配符进行缓存。例如:

  • 缓存包含键“NY, *, 453”和键“NY, 16st, *”
  • 对于参数为“NY, 15st, 453”的请求,该请求成功;对于参数为“NY, 15st,444”的请求,该请求未命中。

仅使用带有“*”标记通配符的普通对象会导致出现许多“if”来检查条件。我考虑过重写 equalstoString 方法,但我找不到正确的方法。

最佳答案

说实话,我认为尝试将其作为简单的字符串来实现会非常痛苦。

我建议采用不同的解决方案。

由于不是 Java 开发人员,我无法为您提供准确的语法,但 P 代码应该足够接近。

class Address {

// Properties.
City: string,
Street: string,
Building: string
}

class Addresses {
Add: List<Address>

public bool GetHit(city, street, building) {
foreach(var add in Add) {
if (add.city == city) && (add.street == street) && (add.building == building) {
return true;
}
}
return false;
}


public bool GetHitByKey(city, street, building) {
// First, check to see if there is a wildcard on the street
if GetHit(city, "*", building) {
return true;
}

if GetHit(city, "*", "*") {
return true;
}

return GetHit(city, street, building);
}
}

待办事项:

  • 传递一个对象而不是 3 个参数
  • 使用二分搜索而不是线性搜索。

关于java - 缓存键中的通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25492744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com