转载:https://blog.csdn.net/Fenglele_Fans/article/details/83627021

1:table.sort()

language = {"lua","java","c#","c++"}

table.sort(language) --只有table一个参数,使用lua默认的排序方式排序
for i, v in ipairs(language) do
-- print(v) --输出c# c++ java lua
end

local function my_comp1(element1,element2) --自定义比较函数 作为table.sort()参数
return element1<element2
end
table.sort(language,my_comp1)
for i, v in ipairs(language) do
print(v) --输出 c# c++ java lua
end

local function my_comp2(element1,element2) --自定义比较函数 作为table.sort()参数
return element1>element2
end
table.sort(language,my_comp2)
for i, v in ipairs(language) do
-- print(v) --输出lua java c++ c#
end

local function my_comp3(element1,element2) --自定义比较函数 作为table.sort()参数
if element1==nil then
return false
end
if element2==nil then
return true
end
return element1>element2
end
language[2]=nil --table中有nil存在的情况
table.sort(language,my_comp3)
for i, v in ipairs(language) do
-- print(v) --输出lua c++ c#
end

2:table.insert()

tab2 = {"a",2,"b",5} --定义一个table

table.insert(tab2,2,"king") --指定在某一位置插入某值
for i, v in ipairs(tab2) do
-- print(v) --输出a king 2 b 5
end

table.insert(tab2,3) --没有指定位置的话,默认将值插入到末尾位置
for i, v in ipairs(tab2) do
-- print(v) --输出a king 2 b 5 3
end

tab3 = {"d",7,"e"}
table.insert(tab2,tab3) -- 将table插入table
for i, v in ipairs(tab2[7]) do
--print(v) --输出d 7 e
end

tab2["mm"]="mmm" --添加一个新的键值对 下面的for迭代器选择pairs才能将新的键值对遍历出来,而非ipairs
for i, v in pairs(tab2) do
print(i,v) --输出1 a ; 2 king ; 3 2 ; 4 b ; 5 5 ; 6 3 ; 7 table ;mm mmm
end

3:table.concat()

tab1 = {"a","b","c",5,"d"}
local aa = table.concat(tab1)
local bb = table.concat(tab1,"/")
local cc = table.concat(tab1,",",2,4)
print(aa) --输出abc5d
print(bb)--输出a/b/c/5/d
print(cc) --输出b,c,5
print(type(aa)) --输出string
print(type(bb)) --输出string
print(type(cc)) --输出string

--再来测试一下table.concat()的效率
local strings = {} --定义一个局部table
for i = 1, 100000 do
strings[i]="hahaha" --给这个table赋值
end

--local stringT = ""
--local startTime = os.clock() --os.clock()获取当前系统时间
--for i,v in ipairs(strings) do
-- stringT=stringT..v --使用for循环连接字符串
--end
--local endTime = os.clock()
--local usedTime = endTime-startTime
--print("for循环连接字符串消耗的时间:"..usedTime) --输出13.135

local startTime = os.clock()
table.concat(strings)
local endTime = os.clock()
local usedTime=endTime-startTime
print("使用table.concat()连接字符串所消耗的时间:"..usedTime) --输出0.01(快了不是一点半点)

4:table.remove()

tab4 = {1,4,"tt","jj"}

table.remove(tab4,1) --移除指定位置的table值,若没有指定位置,则默认移除最后一位的元素

for i, v in ipairs(tab4) do
print(v) --输出 4 tt jj
end

5:unpack()

tab5 = {"b","v","b","f","a"} print( unpack(tab5,1,3)) --输出b v b print(unpack(tab5)) --输出b v b f a

6.table.getn(studentList)获取字符串长度

lua中table的常用方法的更多相关文章

  1. lua中 table 元表中元方法的重构实现

    转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...

  2. lua中 table 重构index/pairs元方法优化table内存占用

    转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...

  3. lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?

    lua中 table.getn(t) .#t. table.maxn(t) 这三个什么区别? RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = ...

  4. Lua中table的实现-《Lua设计与实现》

    本文来自<Lua设计与实现>的阅读笔记,推荐Lua学习者可以购买一本,深入浅出讲解lua的设计和实现原理,很赞,哈哈   Lua中对于表的设计,是基于数组和散列表,和其他语言不同,对于数组 ...

  5. lua中table的遍历,以及删除

    Lua 内table遍历 在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: 1. ipairs for index, value in ipair ...

  6. lua中table如何安全移除元素

    在Lua中,table如何安全的移除元素这点挺重要,因为如果不小心,会没有正确的移除,造成内存泄漏. 引子 比如有些朋友常常这么做,大家看有啥问题 将test表中的偶数移除掉local test = ...

  7. C++对Lua中table进行读取、修改和创建

    C++代码: // LuaAndC.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #i ...

  8. Lua中Table的学习

    --table 是 Lua 的一种数据结构,用来帮助我们创建不同的数据类型,如:数组.字典等 --Lua也是通过table来解决模块(module).包(package)和对象(Object)的. 例 ...

  9. lua中遍历table的几种方式比较

    当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtes ...

随机推荐

  1. Charles应用指南--安装与代理篇

    Charles是开发测试过程中十分常用的一款代理软件,之前也写了一点基本使用.最近有新同事入职头一次用这个,就写了这么一份基本的安装和配置笔记. Charles 下载地址 mac:链接: https: ...

  2. linux 用户和组及文件权限的相关内容

    1.添加用户(只有管理员用户或具有管理员权限的用户可以添加删除用户) useradd  用户名 (laoda)  新创建用户后home下会多一个laoda的目录 ,此目录中存放的是laoda用户相关的 ...

  3. 4196. [NOI2015]软件包管理器【树链剖分】

    Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖( ...

  4. Js 中的事件委托/事件代理

    什么叫事件委托/事件代理呢 ? JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件.   事件冒泡: 当事件发生后,这个事件就要开始传 ...

  5. SQLserver中取众位数的写法

    取众位数:先按个数倒排序,再取第一条SELECT * FROM ( select a.billid,a.DemandVoltage,count(1) as RecordCount, Row_NUMBE ...

  6. 用C#给程序加启动画面并只允许一个应用程序实例运行

    . 启动画面类: public class SplashForm : System.Windows.Forms.Form { private System.Windows.Forms.PictureB ...

  7. B. A Leapfrog in the Array

    http://codeforces.com/problemset/problem/949/B Dima is a beginner programmer. During his working pro ...

  8. 你的安全设置不允许网站使用安装在你的计算机上的ActiveX控件

    在IE中,工具--INTERNET选项--安全--自定义级别--"下载未签名的ActiveX控件"选项改成"提示"或"允许"就好了.

  9. 【Dubbo源码阅读系列】之 Dubbo XML 配置加载

    今天我们来谈谈 Dubbo XML 配置相关内容.关于这部分内容我打算分为以下几个部分进行介绍: Dubbo XML Spring 自定义 XML 标签解析 Dubbo 自定义 XML 标签解析 Du ...

  10. OO——求导作业总结

    目录 OO--求导作业总结 程序结构的分析 第一次作业 第二次作业 第三次作业 对多项式合法性判断的讨论 程序bug的分析 未通过的互测bug bug的位置与程序结构的关系 继承和接口的使用 互测 手 ...