流行编程语言的详细对比(8)--容器类

来源:互联网 发布:18*进入编程 编辑:程序博客网 时间:2024/06/15 00:31

容器类
Java
接口 list set map介绍与简单对比

List:关心的是顺序,它保证维护元素特定的顺序(允许有相同元素),使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在 List 中的位置,类似于数组下标)来访问 List 中的元素。即可以通过下标 (1,2..) 来取得值,值可以重复。

Set:仅接受一次,并做内部排序。只关心某元素是否属于 Set (不允许有相同元素),而不关心它的顺序。只能通过游标来取值,并且值是不能重复的。

Map:最大的特点是键值映射,且为一一映射,键不能重复,值可以,所以是用键来索引值。 方法 put(Object key, Object value) 添 加一个”值” ( 想要得东西 ) 和与”值”相关联的”键” (key) ( 使用它来查找 ) 。方法 get(Object key) 返回与给定”键”相关联的”值” Map同样对每个元素保存一份,但这是基于 “键 ” 的, Map也有内置的排序,因而不关心元素添加的顺序。

简单来说 如果是注重顺序,优选实现了list接口的容器。注重键值管理,优选实现了map接口的容器,如果是单纯集合处理 就选实现了set接口的容器。

list set map实现类的介绍与简单对比

初级实现类 底层实现 特点 同步 安全性
LinkedList 链表 插入删除 没有同步 线程不安全
ArrayList 数组 随机访问 没有同步 线程不安全
Vector 数组 线程安全 同步 线程安全
HashSet HashMap Set中效率高 没有同步 线程不安全
TreeSet TreeMap 固定的顺序 没有同步 线程不安全
Hashtable vector 不能存储null值 有初始容量和负载因子 同步 线程安全
HashMap 哈希表 可以存储null 没有同步 线程不安全
TreeMap 红黑树 总处于平衡状态 没有同步 线程不安全

Js
var cars=new Array();
cars[0]=”Saab”;
cars[1]=”Volvo”;
cars[2]=”BMW”;
或者 (condensed array):
var cars=new Array(“Saab”,”Volvo”,”BMW”);
或者 (literal array):
实例
var cars=[“Saab”,”Volvo”,”BMW”];

Python
序列: str 可用’ “定义, unicode, list[], tuple()
字典: dict{}
dict1 = {‘name’ : ‘LiuZhichao’, ‘age’ : 24}
集合: set, frozenset 
set1 = {1, 2, 3, 4, 5}

Go

Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
定义 Map可以使用内建函数 make 也可以使用 map 关键字来定义 Map:

/* 声明变量,默认 map 是 nil */var map_variable map[key_data_type]value_data_type/* 使用 make 函数 */map_variable := make(map[key_data_type]value_data_type)

如果不初始化 map,那么就会创建一个 nil map。nil map 不能用来存放键值对
实例
下面实例演示了创建和使用map:

package mainimport "fmt"func main() {   var countryCapitalMap map[string]string   /* 创建集合 */   countryCapitalMap = make(map[string]string)   /* map 插入 key-value 对,各个国家对应的首都 */   countryCapitalMap["France"] = "Paris"   countryCapitalMap["Italy"] = "Rome"   countryCapitalMap["Japan"] = "Tokyo"   countryCapitalMap["India"] = "New Delhi"   /* 使用 key 输出 map 值 */   for country := range countryCapitalMap {      fmt.Println("Capital of",country,"is",countryCapitalMap[country])   }   /* 查看元素在集合中是否存在 */   captial, ok := countryCapitalMap["United States"]   /* 如果 ok 是 true, 则存在,否则不存在 */   if(ok){      fmt.Println("Capital of United States is", captial)     }else {      fmt.Println("Capital of United States is not present")    }}

以上实例运行结果为:
Capital of France is Paris
Capital of Italy is Rome
Capital of Japan is Tokyo
Capital of India is New Delhi
Capital of United States is not present

Scala

// 定义整型 List,List的特征是其元素以线性方式存储,集合中可以存放重复对象。val x = List(1,2,3,4)// 定义 Set,Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象var x = Set(1,3,5,7)// 定义 Map,Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。val x = Map("one" -> 1, "two" -> 2, "three" -> 3)// 创建两个不同类型元素的元组val x = (10, "Runoob")// 定义 Option,元组是不同类型的值的集合val x:Option[Int] = Some(5)//迭代器不是一个容器,更确切的说是逐一访问容器内元素的方法。object Test {   def main(args: Array[String]) {      val it = Iterator("Baidu", "Google", "Runoob", "Taobao")      while (it.hasNext){         println(it.next())      }   }}

PHP

<?php$cars=array("Volvo","BMW","SAAB");$cars[0]="Volvo";$cars[1]="BMW";$cars[2]="SAAB";$arrlength=count($cars);for($x=0;$x<$arrlength;$x++) {  echo $cars[$x];  echo "<br>";}?><?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");$age['Peter']="35";$age['Ben']="37";$age['Joe']="43";foreach($age as $x=>$x_value) {  echo "Key=" . $x . ", Value=" . $x_value;  echo "<br>";}?>function cube($n){    return($n * $n * $n);}$a = array(1, 2, 3, 4, 5);$b = array_map("cube", $a);print_r($b)
原创粉丝点击