Android 在整数的json数组中搜索整数值

Android 在整数的json数组中搜索整数值,android,arrays,json,Android,Arrays,Json,我有一个json数组,包含整数,我已经对其进行了排序。现在我想在json数组中搜索一个整数元素(json数组的大小根据情况而变化,但它只包含整数,没有其他内容)。进行有效搜索的最佳方法是什么?var obj=“{\'array\':[\'key1\':\'value1\',\'key2\':\'value2\'”]; var obj = "{\"array\":[\"key1\":\"value1\",\"key2\":\"value2\"]}"; var searchInt= int val

我有一个
json数组
,包含
整数
,我已经对其进行了排序。现在我想在
json数组
中搜索一个整数元素(json数组的大小根据情况而变化,但它只包含
整数
,没有其他内容)。进行有效搜索的最佳方法是什么?

var obj=“{\'array\':[\'key1\':\'value1\',\'key2\':\'value2\'”];
var obj = "{\"array\":[\"key1\":\"value1\",\"key2\":\"value2\"]}";

var searchInt= int value;


for (var i = 0; i < obj.length; i++){

  if (obj[i].code == searchInt){

    // obj[i].name is the matched result
  }
}
var searchInt=int值; 对于(变量i=0;i
var obj=“{\'array\':[\'key1\':\'value1\',\'key2\':\'value2\']}”;
var searchInt=int值;
对于(变量i=0;i
var obj=“{\'array\':[\'key1\':\'value1\',\'key2\':\'value2\']}”;
var searchInt=int值;
对于(变量i=0;i
var obj=“{\'array\':[\'key1\':\'value1\',\'key2\':\'value2\']}”;
var searchInt=int值;
对于(变量i=0;i
您可以对数组进行二进制搜索,如:

1-设置最小/最大整数索引以覆盖整个浮点数组

2 -在索引MID=(min +max/2)范围内的中间值对搜索值x

进行测试 3-如果x小于此值,则将“最大值”设置为“中间值”,否则将“最小值”设置为“中间值”


4-重复(2-4),直到找到正确的值为止

您可以对数组执行二进制搜索,如:

1-设置最小/最大整数索引以覆盖整个浮点数组

2 -在索引MID=(min +max/2)范围内的中间值对搜索值x

进行测试 3-如果x小于此值,则将“最大值”设置为“中间值”,否则将“最小值”设置为“中间值”


4-重复(2-4),直到找到正确的值为止

您可以对数组执行二进制搜索,如:

1-设置最小/最大整数索引以覆盖整个浮点数组

2 -在索引MID=(min +max/2)范围内的中间值对搜索值x

进行测试 3-如果x小于此值,则将“最大值”设置为“中间值”,否则将“最小值”设置为“中间值”


4-重复(2-4),直到找到正确的值为止

您可以对数组执行二进制搜索,如:

1-设置最小/最大整数索引以覆盖整个浮点数组

2 -在索引MID=(min +max/2)范围内的中间值对搜索值x

进行测试 3-如果x小于此值,则将“最大值”设置为“中间值”,否则将“最小值”设置为“中间值”


4-重复(2-4)直到你找到了@Friar Bob建议的正确值,我使用二进制搜索进行搜索。我首先将json数组转换为一个名为selectedCatIds的列表变量,如果元素为false,则使用下面的方法返回true。谢谢大家的帮助。二进制搜索确实有效地完成了这项工作

 private boolean searchInSelectedIdsList(int storeCatId){
    int notFound = -1;
    int low=0,high=selectedCatIds.size()-1,mid =(low+high)/2;
    while(low<=high &&  selectedCatIds.get(mid)!=storeCatId){
        if(selectedCatIds.get(mid)<storeCatId)
            low = mid+1;
        else
            high = mid-1;
        mid = (low+high)/2;
    }
    if(low>high)
        mid=notFound;
    return (mid>=0);
}
private boolean searchInselectEdisList(int-storeCatId){
int notFound=-1;
int low=0,high=selectedCatIds.size()-1,mid=(低+高)/2;
而(低=0);
}

根据@Friar Bob的建议,我使用二进制搜索进行搜索。我首先将json数组转换为一个名为selectedCatIds的列表变量,如果元素为false,则使用下面的方法返回true。谢谢大家的帮助。二进制搜索确实有效地完成了这项工作

 private boolean searchInSelectedIdsList(int storeCatId){
    int notFound = -1;
    int low=0,high=selectedCatIds.size()-1,mid =(low+high)/2;
    while(low<=high &&  selectedCatIds.get(mid)!=storeCatId){
        if(selectedCatIds.get(mid)<storeCatId)
            low = mid+1;
        else
            high = mid-1;
        mid = (low+high)/2;
    }
    if(low>high)
        mid=notFound;
    return (mid>=0);
}
private boolean searchInselectEdisList(int-storeCatId){
int notFound=-1;
int low=0,high=selectedCatIds.size()-1,mid=(低+高)/2;
而(低=0);
}

根据@Friar Bob的建议,我使用二进制搜索进行搜索。我首先将json数组转换为一个名为selectedCatIds的列表变量,如果元素为false,则使用下面的方法返回true。谢谢大家的帮助。二进制搜索确实有效地完成了这项工作

 private boolean searchInSelectedIdsList(int storeCatId){
    int notFound = -1;
    int low=0,high=selectedCatIds.size()-1,mid =(low+high)/2;
    while(low<=high &&  selectedCatIds.get(mid)!=storeCatId){
        if(selectedCatIds.get(mid)<storeCatId)
            low = mid+1;
        else
            high = mid-1;
        mid = (low+high)/2;
    }
    if(low>high)
        mid=notFound;
    return (mid>=0);
}
private boolean searchInselectEdisList(int-storeCatId){
int notFound=-1;
int low=0,high=selectedCatIds.size()-1,mid=(低+高)/2;
而(低=0);
}

根据@Friar Bob的建议,我使用二进制搜索进行搜索。我首先将json数组转换为一个名为selectedCatIds的列表变量,如果元素为false,则使用下面的方法返回true。谢谢大家的帮助。二进制搜索确实有效地完成了这项工作

 private boolean searchInSelectedIdsList(int storeCatId){
    int notFound = -1;
    int low=0,high=selectedCatIds.size()-1,mid =(low+high)/2;
    while(low<=high &&  selectedCatIds.get(mid)!=storeCatId){
        if(selectedCatIds.get(mid)<storeCatId)
            low = mid+1;
        else
            high = mid-1;
        mid = (low+high)/2;
    }
    if(low>high)
        mid=notFound;
    return (mid>=0);
}
private boolean searchInselectEdisList(int-storeCatId){
int notFound=-1;
int low=0,high=selectedCatIds.size()-1,mid=(低+高)/2;
而(低=0);
}


假设数组已排序,并且您知道如何搜索,二进制搜索是最有效的。线性搜索是我想到的第一件事,但我只想进行有效搜索,因为搜索非常频繁,我的应用程序的性能也取决于此。@Rohit查看此网站:您尝试过吗?jsonArray.toString()包含(“”);我可以使用二进制搜索,只是为了获取知识,android/java是否提供了搜索功能?就像我们有Collections.sort(Arraylist)对整数值列表进行排序。假设数组已排序,并且您知道如何搜索,二进制搜索是最有效的。线性搜索是我想到的第一件事,但我只想做一个高效的搜索,因为搜索是经常进行的,我的应用程序的性能也取决于它。@Rohit检查这个网站:你试过了吗?jsonArray.toString()包含(“”);我可以使用二进制搜索,只是为了获取知识,android/java是否提供了搜索功能?就像我们有Collections.sort(Arraylist)用于对整数值列表进行排序。假设数组已排序,并且您知道如何搜索,二进制搜索是最有效的。线性搜索,这是我想到的第一件事,但我只想进行有效的搜索,因为搜索非常频繁