1 java
1.1 <List>
实现collection接口,支持泛型,有序,子类有
1.1.1 ArrayList 最常用的 线程不安全的
1.1.2 LinkedList 基于链表的数据结构 线程不安全的 也实现了Queue 也是一个双向队列
1.1.3 vector 类似ArrayList,但是是线程安全的,效率比ArrayList
1.2 <Set>
实现collection接口,支持泛型,不包含重复元素,子类有
1.2.1 HashSet 无序的 为快速查找实现的Set
1.2.2 TreeSet 实现Comparable接口,可以对元素进行排序
1.2.3 LinkedHashSet 链表结构 输入跟输出顺序一致
1.3 <Map>
支持键值对 键无序
1.3.1 HashMap 最常用的容器 优化了搜索的Map 线程不安全
1.3.2 LinkedHashMap 链表结构 搜索比hashMap慢 但是迭代会快一点
1.3.3 TreeMap 实现Comparable接口,可以对键进行排序
1.4 Collections 提供对List Set的搜索等实现
1.5 String
1.6 StringBuffer
1.7 迭代器
List和Set都继承了Iterable接口,Map的entrySet返回的是Set类型 所以这三种都直接或间接实现了Iterable
Iterable方法返回Iterator 它有三个方法hasNext,next,remove
Map<String, Integer> m = new HashMap<String, Integer>();
m.put("1", 11);
m.put("2", 22);
Iterator<Entry<String, Integer>> iter = m.entrySet().iterator();
while (iter.hasNext()) {
Entry<String, Integer> e = iter.next();
System.out.println(e.getKey() + "--" + e.getValue());
}
2 c++
2.1 vector <vector> 类似数组 但是比数组方便
2.2 list <list>
2.3 deque <deque> 双端队列
2.4 stack LIFO
2.5 queue FIFO
ps:指定容器的容器时 list< list<string> > 内部容器的尖括号必须加空格
2.6 pair 一个模板类 封装了键值对 与map有关系
2.7 map 存储键值对 初始化有下标法 构造方法
2.8 set 存储的值唯一,利用平衡二叉树结构,插入时自动排序,不能直接改变
2.9 multimap multiset 一个键对应多个实例 不支持下标
2.10 string 是字符容器
2.11 五种类型的迭代器
Input iterators 提供对数据的只读访问。
Output iterators 提供对数据的只写访问
Forward iterators 提供读写操作,并能向前推进迭代器。
Bidirectional iterators 提供读写操作,并能向前和向后操作。
Random access iterators 提供读写操作,并能在数据中随机移动。
总结的蛮好的 http://jingyan.baidu.com/article/25648fc1a4e8cb9190fd005b.html
对于关联式容器(map, list, set)元素的删除,插入操作会导致指向该元素的迭代器失效,其他元素迭代器不受影响。
对于顺序式容器(vector)元素的删除、插入操作会导致指向该元素以及后面的元素的迭代器失效。
3 php
php的容器大概就是string和强大的数组了
3.1 字符串
3.1.1 单引号 双引号 反引号
单引号中的内容都被当做普通字符串
双引号中的内容会经过php语法分析器进行解析
反引号可以执行当前系统的命令
3.1.2 字符连接用 . 符号
3.2 数组
3.2.1 分类
数字索引数组 只能数字为键 默认
关联数组 可以指定非数字的键
多维数组
3.2.2 遍历及输出
print_r
var_dump
foreach($list as $key=>$val)
while(list($key,$val)=each($list))
还有一些函数如currect、reset、end、next、pos、prev
3.2.3 数组与字符串互转
explode implode
4 python
4.1 string
截取字符串 str[1:3] 截取字符串的 [1,3)
判断是否包含字符 s in str str是否包含s
重复输出 a*3 输出 aaa
格式化
4.2 list
支持索引
遍历 for x in [1,2,3]
4.3 元组 ()
类似list 但是内容不可修改
即使不带括号 x, y=1,2; 默认也是元组
4.4 字典
dir={"a":1,"b":2}
键值必须保证不可修改 所以可以是数字,字符串,元组 但是list不可用
4.5 set 集合
4.6 遍历
有类似foreach的遍历
colours = ["red","green","blue"]
for colour in colours:
还有普通的遍历
for i in range(0, len(colours)):
5 js
object也算是一种容器吧
5.1 object
5.1.1 通过new
var obj=new Object();
obj.name="name"; //在js中 函数对象的属性可用随时添加
5.1.2 通过字面量 不会调用Object的构造函数
var obj={
name="name",
};
5.2 array
5.2.1 检测array
instanceof Array.isArray(arr)
5.2.2 迭代
every filter forEach map some
6 oc
6.1 NSNumber 将基本类型包装 是不是跟java的装箱类似
NSNumber *num=[NSNumber numberWithXXX:初始值]
NSNumber *num=[[NSNumber alloc]initWithXXX:初始值]
6.2 NSString NSMutableString
6.3 NSArray NSMutableArray
6.4 NSDictionary NSMutableDictionary //字典
6.5 NSSet NSMutableSet
6.6 NSEnumerator 用于快速枚举NSArray NSDictionary NSSet 没有NSMutableXXX
7 swift let var可以决定oc的Mutable
7.1 String swift的String可以直接调用NSString的函数 但是NSString不能调用String独有的方法
var str=NSString(string:"ss");
输出转义 println("\(xxx)") 将输出变量xxx的值
7.2 数字
let num:NSNumber = 1;
let num:NSNumber=NSNumber(integer:2);
7.3 Array
var arr:[Int]=[1,2,3]; //初始化
var arrMu=NSMutableArray(array:arr); //转为NSMutableArray类型
也可以var arrMu:NSMutableArray=arr;
var ar=NSArray(array:arr); //转为NSArray类型
7.4 Dictionary
let dic:Dictionary<String,String>=["k1":"v1" ,"k2":"v2"];
遍历
for(key,value:AnyObject) in dic{
println("\(key) \(value)");
}
7.5 Set
总结 :上述语言中,容器都是很类似的,大多都是字符串类型、数组结构、字典结构,只是封装程度不同,脚本语言都会简单点,但是功能都大致相同