文档章节

2.使用集合

阿元
 阿元
发布于 2017/02/08 17:45
字数 1105
阅读 0
收藏 0
点赞 0
评论 0

2.1数组

1array

输入图片说明

添加相同类型元素: 1.先把常量的值赋给变量

9> var VarFruitJay = FruitJay
VarFruitJay: [String] = 4 values {
[0] = "apple"
[1] = "pear"
[2] = "orange"
[3] = "banana"
}

2.再通过"append()"或"+="添加元素 //方法1

10> VarFruitJay.append("pineApple")
//方法2
11> VarFruitJay += ["peanut"]
12> VarFruitJay
$R2: [String] = 6 values {
[0] = "apple"
[1] = "pear"
[2] = "orange"
[3] = "banana"
[4] = "pineApple"
[5] = "peanut"
}

数组添加不同类型元素: 转换表示数组的类型为Any

17> var array1:[Any] = ["dog",1]
array1: [Any] = 2 values {
[0] = "dog"
[1] = 1
}
18> array1.append(1)
19> array1
$R3: [Any] = 3 values {
[0] = "dog"
[1] = 1
[2] = 1
}

替换

23> array1
R5:[Any]=3values[0]="dog"[1]=1[2]=124>array1[0]="Cat"25>array1R6: [Any] = 3 values {
[0] = "Cat"
[1] = 1
[2] = 1
}

删除值

26> array1.remove(at:2)
R7:Int=127>array1R8: [Any] = 2 values {
[0] = "Cat"
[1] = 1
}

删除最后一个元素

28> array1.removeLast()
R9:Int=129>array1R10: [Any] = 1 value {
[0] = "Cat"
}

删除全部元素

30> array1.removeAll()
31> array1
$R11: [Any] = 0 values

将值插入指定位置

33> var FruitJay : [Any] = ["apple",2017,true,"orange"]
FruitJay: [Any] = 4 values {
[0] = "apple"
[1] = 2017
[2] = true
[3] = "orange"
}
34> FruitJay.insert("Zoujie",at:3)
35> FruitJay
$R13: [Any] = 5 values {
[0] = "apple"
[1] = 2017
[2] = true
[3] = "Zoujie"
[4] = "orange"
}

数组合并 任意类型值数组合并相同类型值数组

36> var antherFood : [Any] = [2018,false,"zhouerke"]
antherFood: [Any] = 3 values {
[0] = "2018"
[1] = false
[2] = "zhouerke"
}
37> var Drink = ["cola","juice","water"]
Drink: [String] = 3 values {
[0] = "cola"
[1] = "juice"
[2] = "water"
}
38> var supper:[Any] = antherFood + Drink
40> supper
$R14: [Any] = 6 values {
[0] = 2018
[1] = false
[2] = "zhouerke"
[3] = "cola"
[4] = "juice"
[5] = "water"
}

数组添加数组

43> var Drink2 = ["orange juice","baisi cole"]
Drink2: [String] = 2 values {
[0] = "orange juice"
[1] = "baisi cole"
}
44> Drink2 += Drink
45> print (Drink2)
["orange juice", "baisi cole", "cola", "juice", "water"]

2.2字典

var PersonValue = ["face":20_000,"leg":1_000,"health":30_000_000,"hand":10_000,"head":3_000_000]
PersonValue: [String : Int] = 5 key/value pairs {
[0] = {
key = "health"
value = 30000000
}
[1] = {
key = "hand"
value = 10000
}
[2] = {
key = "leg"
value = 1000
}
[3] = {
key = "face"
value = 20000
}
[4] = {
key = "head"
value = 3000000
}
}

value可以声明Any任意类型元素

4> var Anydic : [String: Any] = ["1":1,"2":"2.1","3":3]
Anydic: [String : Any] = 3 key/value pairs {
[0] = {
key = "2"
value = "2.1"
}
[1] = {
key = "1"
value = 1
}
[2] = {
key = "3"
value = 3
}
}

Swift通过排列键来确保检索和访问的效率,你不能根据声明顺序确定存储顺序

查找条目

6> PersonValue ["face"]
$R0: Int? = 20000

7> var newDic = ["someKey":nil]
error: repl.swift:7:14: error: type of expression is ambiguous without more context
var newDic = ["someKey":nil]

8> var newDic = [nil:1]
error: repl.swift:8:14: error: type of expression is ambiguous without more context
var newDic = [nil:1]

字典键和值都不能指定为nil

8> PersonValue ["none"]
$R1: Int? = nil

字典将值返回为可选类型,是因为查询字典时使用的键可能不存在

添加&&更新条目

10> PersonValue ["none"] = 500_000
11> PersonValue ["face"] = 5
12> PersonValue
$R2: [String : Int] = 6 key/value pairs {
[0] = {
key = "none"
value = 500000
}
[1] = {
key = "health"
value = 30000000
}
[2] = {
key = "hand"
value = 10000
}
[3] = {
key = "leg"
value = 1000
}
[4] = {
key = "face"
value = 5
}
[5] = {
key = "head"
value = 3000000
}
}

删除条目

14> PersonValue ["face"] = nil//直接设置键的值为nil
15> PersonValue.removeValue(forKey:"leg")//语法删除
R4:Int?=100016>PersonValueR5: [String : Int] = 4 key/value pairs {
[0] = {
key = "none"
value = 500000
}
[1] = {
key = "health"
value = 30000000
}
[2] = {
key = "hand"
value = 10000
}
[3] = {
key = "head"
value = 3000000
}
}

数组嵌套

23> var array1:[Any] = ["name",23,"age"]
array1: [Any] = 3 values {
[0] = "name"
[1] = 23
[2] = "age"
}
24> var array2:[Any] = [true,"sex"]
array2: [Any] = 2 values {
[0] = true
[1] = "sex"
}
25> let array3 = ["weight","height"]
array3: [String] = 2 values {
[0] = "weight"
[1] = "height"
}
26> let sumArray = [array1,array2,array3]
sumArray: [[Any]] = 3 values {
[0] = 3 values {
[0] = "name"
[1] = 23
[2] = "age"
}
[1] = 2 values {
[0] = true
[1] = "sex"
}
[2] = 2 values {
[0] = "weight"
[1] = "height"
}
}

字典嵌套

27> let sumDic = ["key1":array1,"key2":array2,"key3":array3]
sumDic: [String : [Any]] = 3 key/value pairs {
[0] = {
key = "key2"
value = 2 values {
[0] = true
[1] = "sex"
}
}
[1] = {
key = "key3"
value = 2 values {
[0] = "weight"
[1] = "height"
}
}
[2] = {
key = "key1"
value = 3 values {
[0] = "name"
[1] = 23
[2] = "age"
}
}
}

查询

28> sumDic["key1"]
$R10: [Any]? = 3 values {
[0] = "name"
[1] = 23
[2] = "age"
}

创建空数组 普通方式

29> var myEmptyArray : Array = []
myEmptyArray: [Int] = 0 values
简洁方式
30> var myEmptyArray = Any
myEmptyArray: [Any] = 0 values

给数组赋空值,删除所有元素

31> myEmptyArray += ["1",true,2]
32> myEmptyArray
$R11: [Any] = 3 values {
[0] = "1"
[1] = true
[2] = 2
}

33> myEmptyArray = []
34> myEmptyArray
$R12: [Any] = 0 values

创建空字典

35> var myEmptyDic = Dictionary()
myEmptyDic: [String : Double] = 0 key/value pairs
36> var myEmptyDic = Int: String
myEmptyDic: [Int : String] = 0 key/value pairs

声明后在清空

37> myEmptyDic = [:]
38> myEmptyDic
$R13: [Int : String] = 0 key/value pairs

迭代数组

39> for arr in sumArray{
40. print("(arr)")
41. }
["name", 23, "age"]
[true, "sex"]
["weight", "height"]

42> for (index , arr) in sumArray.enumerated(){
43. print("(arr)is in (index) of the array")
44. }
["name", 23, "age"]is in 0 of the array
[true, "sex"]is in 1 of the array
["weight", "height"]is in 2 of the array

迭代字典

45> for (key , value) in sumDic{
46. print("(key) and (value)")
47. }
key2 and [true, "sex"]
key3 and ["weight", "height"]
key1 and ["name", 23, "age"]

遍历所有值

54> for (value) in sumDic.values{
55. print("(key)")
56. }
[true, "sex"]
["weight", "height"]
["name", 23, "age"]

遍历所有键

51> for (key) in sumDic.keys{
52. print("(key)")
53. }
key2
key3
key1

© 著作权归作者所有

共有 人打赏支持
阿元
粉丝 5
博文 154
码字总数 98469
作品 0
浦东
程序员
Java集合框架的知识总结(1)

说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析。 1、综述 所有集合类都位于java.util包下。集合中只能保存对象(保...

dong.li ⋅ 2012/04/24 ⋅ 0

Groovy(四)-布尔值,Lists,Arrays,Maps

译文:Groovy Language Documentation 布尔值 布尔值是一种用来表示真值:true和false的特殊数据类型。用这种数据类型可以设置简单的标志位来跟踪true/false情况。 布尔类型可以保存在变量中...

ZJ_Rocky ⋅ 2017/12/06 ⋅ 0

初窥groovy之集合(1)

最近学习了下groovy这门语言,感觉很犀利很简洁。groovy优缺点就不赘述了,有兴趣的google下。下面看下groovy对list的操作,也许能勾起你的兴趣。 1、创建list static void main(args){ } 没...

kyle1970 ⋅ 2012/10/30 ⋅ 0

Collection-Iterator-foreach-泛型(Generic)

一.Collection(java.util) 1.概述:具有相同性质的一类事物的汇聚的整体,称为集合.任何集合都包含三块内容:对外的接口/接口的实现/对集合运算的算法. java中使用Collection来表示单列集合顶层...

老胡2015 ⋅ 2017/06/18 ⋅ 0

Java集合框架(一)——集合概述

本文概述 本篇文章将分三块内容对Java中的集合框架进行介绍: 一. 集合框架相关概念 二. 集合体系通用方法 三. 集合遍历—Iteractor 一. 集合框架相关概念 集合:用于存储多个对象的容器 1....

Mr_Yanger ⋅ 2017/11/11 ⋅ 0

Java中如何克隆集合——ArrayList和HashSet深拷贝

编程人员经常误用各个集合类提供的拷贝构造函数作为克隆,,,或者其他集合实现的方法。需要记住的是,Java集合的拷贝构造函数只提供浅拷贝而不是深拷贝,这意味着存储在原始List和克隆List中...

markGao ⋅ 2014/04/18 ⋅ 0

Java 泛型: 什么是PECS(Producer Extends, Consumer Super)

什么是PECS? PECS指“Producer Extends,Consumer Super”。换句话说,如果参数化类型表示一个生产者,就使用<? extends T>;如果它表示一个消费者,就使用<? super T>,可能你还不明白,不...

Sub ⋅ 2014/02/19 ⋅ 1

集合遍历:for VS foreach

假设我们拥有下面的集合 1 System.Collections.ArrayList list = new System.Collections.ArrayList(); 2 list.Add(1); 3 list.Add(12); 4 list.Add(3); 5 list.Add(56); 现在我们要遍历这个......

彭博 ⋅ 2012/03/09 ⋅ 0

【java】for和foreach的区别

一、概述 普通for循环在遍历集合时使用下标来定位集合中的元素。java在JDK1.5开始支持foreach循环,foreach在一定程度上简化了对集合的遍历。但某些情况下,foreach是不能完全代替for循环的。...

qq_26545305 ⋅ 2017/11/09 ⋅ 0

Guava集合-不可变集合

JDK的Collections.unmodifiableXXX方法实现不可变集合的一些问题:   1.它用起来笨拙繁琐你不得不在每个防御性编程拷贝的地方用这个方法   2.它不安全:如果有对象reference原始的被封装...

Kevin-air ⋅ 2016/08/04 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NFS介绍 NFS服务端安装配置 NFS配置选项

NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导...

lyy549745 ⋅ 31分钟前 ⋅ 0

Spring AOP 源码分析 - 筛选合适的通知器

1.简介 从本篇文章开始,我将会对 Spring AOP 部分的源码进行分析。本文是 Spring AOP 源码分析系列文章的第二篇,本文主要分析 Spring AOP 是如何为目标 bean 筛选出合适的通知器(Advisor...

java高级架构牛人 ⋅ 54分钟前 ⋅ 0

HTML-标签手册

标签 描述 <!--...--> 定义注释。 <!DOCTYPE> 定义文档类型。 <a> 定义锚。超链接 <abbr> 定义缩写。 <acronym> 定义只取首字母的缩写。 <address> 定义文档作者或拥有者的联系信息。 <apple......

ZHAO_JH ⋅ 56分钟前 ⋅ 0

SylixOS在t_main中使用硬浮点方法

问题描述 在某些使用场景中,应用程序不使用动态加载的方式执行,而是跟随BSP在 t_main 线程中启动,此时应用代码是跟随 BSP 进行编译的。由于 BSP 默认使用软浮点,所以会导致应用代码中的浮...

zhywxyy ⋅ 今天 ⋅ 0

JsBridge原理分析

看了这个Github代码 https://github.com/lzyzsd/JsBridge,想起N年前比较火的Hybrid方案,想看看现在跨平台调用实现有什么新的实现方式。代码看下来之后发现确实有点独特之处,这里先把核心的...

Kingguary ⋅ 今天 ⋅ 0

Intellij IDEA神器常用技巧五-真正常用快捷键(收藏级)

如果你觉得前面几篇博文太啰嗦,下面是博主多年使用Intellij IDEA真正常用快捷键,建议收藏!!! sout,System.out.println()快捷键 fori,for循环快捷键 psvm,main方法快捷键 Alt+Home,导...

Mkeeper ⋅ 今天 ⋅ 0

Java 静态代码分析工具简要分析与使用

本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析和比较,...

Oo若离oO ⋅ 今天 ⋅ 0

SpringBoot自动配置小记

spring-boot项目的特色就在于它的自动配置,自动配置就是开箱即用的本源。 不过支持一个子项目的自动配置,往往比较复杂,无论是sping自己的项目,还是第三方的,都是如此。刚接触会有点乱乱...

大_于 ⋅ 今天 ⋅ 0

React jsx 中写更优雅、直观的条件运算符

在这篇文字中我学到了很多知识,同时结合工作中的一些经验也在思考一些东西。比如条件运算符 Conditional Operator condition ? expr_if_true : expr_if_false 在jsx中书写条件语句我们经常都...

开源中国最帅没有之一 ⋅ 今天 ⋅ 0

vim编辑模式与命令模式

5.5 进入编辑模式 从编辑模式返回一般模式“Esc” 5.6 vim命令模式 命令 :“nohl”=no high light 无高亮,取消内容中高亮标记 "x":保存退出,和wq的区别是,当进入一个文件未进行编辑时,使...

弓正 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部