lua中高效判断数组(table)中是否存在某个字符值

publish:June 28, 2016 -Tuesday by 04007 本站原创文章,转载请注明文章出处:www.04007.cn

在PHP中对一个数组进行判断时有很方便的函数调用,比如in_array;array_search。但在LUA中这些轮子都需要自己造了。网上有提供一些常理的方法,比如:http://www.jb51.net/article/65457.htm

将table循环遍历一遍,然后对每个值进行判断是否与所找的值对应。代码如下:

但这种方式每次都要进行循环遍历,我们知道它的复杂度是O(n),如果有很多字符串都要查询,这时它的低效率就更体现地明显了。实际我们可以借助lua的table结构来优化这种查询,lua的table是一个高效的表结构,就像我们理解PHP里的hashtable一样,在lua的table里查询某个键名是否存在只有O(1)的复杂度,所以我们可以这样处理:先对要查找的table进行键值对调处理,然后所有的查找就变成了对table的索引,如果索引值为nil(即示查找到).代码如下:

以上的代码执行用时统计结果如下:多次测试都显示后面的方法效率都高很多。

---------- Run Lua ----------
cost time:0.005
cost time:0

输出完成 (耗时 0 秒) - 正常终止

lua中 高效判断数组(table)中是否存在某个字符 值相关推荐

  1. Java中高效判断数组中是否包含某个元素

    如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种 ...

  2. php判断数组是否存在字符串中,php判断数组元素中是否存在某个字符串的方法

    今天在写一个函数的时候,需要用到判断数组中是否存在某个字符串,方便我们继续后面的操作,这里简单为大家介绍下,需要的朋友可以参考下 方法一:采用in_array(value,array,type) ty ...

  3. php判断数组是否存在字符串中,php判断数组元素中是否存在某个字符串的方法_php技巧...

    方法一:采用in_array(value,array,type) type 可选.如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同. $arr = array('可以','如何', ...

  4. 3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景|判断数组里有没有某对象,有不添加,没有则添加到数组

    3.js中判断数组中是否存在某个对象/值,判断数组里的对象是否存在某个值 的五种方法 及应用场景 一.当数组中的数据是简单类型时: 应用js中的indexof方法:存在则返回当前项索引,不存在则返回 ...

  5. java怎么统计随机数出现次数,Excel统计出现次数、个数的VBA代码 java中怎么判断一个字符串中包含某个字符或字...

    延伸:java中怎么判断一个字符串中包含某个字符或字符 描述:...一个字符串中包含某个字符的单词说出现的次数 c#什么方法可以判断字符串中包含某个字符的个数? JAVA判断字符串数组中是否包含某字符 ...

  6. 算法题1:数组A中存在而数组B中不存在的元素

    1.题目描述: 有2个整型数组A和B,要求找出数组A中存在而数组B中不存在的元素,并打印输出(保持原顺序) 例如, 输入数组A:1 2 3 5 输如数组B:2 3 4 输出:1 5 2.python3 ...

  7. 查找数组B中不在数组A中的元素

    @查找数组B中不在数组A中的元素(小白学demo_day1) 查找数组B中不在数组A中的元素 数组A(N个元素)按照从小到大的顺序,数组B(M个元素)无序 查找数组B中不在数组A中的元素 步骤: (方 ...

  8. java 包含几个字符_java中如何判断一个字符串包含几个指定字符

    java中如何判断一个字符串包含几个指定字符 可以用String类里的indexOf(String s,int i)方法,这个方法s是字符串div,i是从i下标开始查找该字符串在调用字符串中的位置,返 ...

  9. go 判断元素是否在slice_在Java中如何高效判断数组中是否包含某个元素

    如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种 ...

最新文章

  1. goaccess在定时任务中不执行的问题
  2. java md5 ios_iOS 自带MD5
  3. [转]Android fragment 重叠问题——通过hide,show方式导致的解决方法
  4. pycharm远程和本地同时_pycharm远程开发之django配置
  5. 111. Leetcode 300. 最长递增子序列 (动态规划-子序列问题)
  6. Dalvik指令备忘
  7. 嵌入式NVR发展浅析
  8. OpenCV的数据类型——基础数据类型
  9. 微信第三方平台定时接收component_verify_ticket
  10. 了解java虚拟机---JVM的基本结构(1)
  11. 剑指 Offer II 055. 二叉搜索树迭代器
  12. 详解:Oracle 数据库空间表、自定义用户、权限管理、序列、同义词、索引
  13. 文献解读——基于深度学习的病毒宿主预测
  14. VM虚拟机安装无法打开注册表项及虚拟网卡消失导致网络出错等问题
  15. 【paper 学习】1、DeepWiFi: Cognitive WiFi with Deep Learning
  16. mysql如何恢复单表_MySQL如何恢复单库或单表,以及可能遇到的坑
  17. 路由器到游戏服务器稳定性差,电竞路由器和普通路由器有什么区别!
  18. 51单片机内存动态分配
  19. 项目实训----Unity多人游戏开发----第十篇
  20. paddlepaddle模型的保存和加载

热门文章

  1. Spoon系列-概要
  2. windows下WNMP(windows+nginx+mysql+php)配置
  3. 编写程序练习直接,间接,相对,基址变址寻址
  4. el-row文字换行后实现整行自动撑开
  5. 查准率/查全率/F1指标
  6. 服务器主机型号,服务器的主机型号
  7. 设编号为1,2,… n的n个人围坐一圈,约定编号为k(1=k=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个
  8. Swift 标准库源码 第三方,Almofire,Kingfisher,SwiftyJson,KakaJson,单元测试 request
  9. SqlSever Management Studio
  10. php web程序漏洞,各种web程序漏洞