JavaFx中文入门教程--数组
来源:互联网 发布:达梦数据库dm6下载 编辑:程序博客网 时间:2024/06/14 00:36
http://cnjavafx.cn/javafx/index.html
数组
除了五种基本类型,JavaFx还提供了另外一个很常用的数据结构,数组。这个类型的英文名字为sequence,准确的说,不能翻译成数组,实际从行为上看更像是ArrayList。姑且称之为数组,并不影响理解。
定义格式:[...],用方括号括起来,逗号分隔的一串表达式值。
下面是两个简单的数组定义:
var weekDays = ["Mon","Tue","Wed","Thur","Fri"];
var days = [weekDays, ["Sat","Sun"]];
数组表示一串有序的对象。但是,数组本身跟其他对象是有区别的,这个体现在,数组不能嵌套。在上例中的days,在表达式中出现了嵌套的数组,会被自动平展开。比如上面例子中:
days == ["Mon","Tue","Wed","Thur","Fri","Sat","Sun"]; // returns true
数组是通过值来比较是否相等的,只有元素个数相等,且每一个元素也相等的时候,两个数组才被认为相等。
另外,有一个例外的地方,单个对象跟只有一个元素的数组是相等的,即:
1 == [1]; // returns true
数组类型的变量是通过[]来表示的,所以,数组会声明成这个样子:
var xs:Number[]; // Number 数组
var strs:String[]; // 字符串数组
数组元素可以通过下标来访问,这个跟Java的语法一样:
var wednesday = days[2];
为了方便书写,JavaFx提供了一个简便的方法,用".."来表示一个数字数组。就像这样:
var nums = [1..100];
var nums2 = [1..100 step 2];
[]操作符支持元素过滤,语法为:
数组[变量|逻辑表达式]
例如:
var nums = [1,2,3,4];
var numsGreaterThanTwo = nums[n|n > 2];
片段操作(slice),这个操作十分灵活,比较有用。
seq[a..b] // a, b 之间的元素,包括a,b
seq[a..<b] // a, b 之间的元素,包括a, 不包括b
seq[a..] // 跟 seq[a..<sizeof seq] 一样
seq[a..<] // 跟 seq[a..<sizeof seq-1] 一样
for 遍历
看一个简单的完整例子:sequence01.fx
package example;
import java.lang.System;
var seq1 = [1, 2, 'abc', 23.5, 3ms];
System.out.println(seq1);
for (it in seq1) {
System.out.println(it);
}
编译运行看结果:
#javafxc sequence01.fx -d .
#javafx example.sequence01
[ 1, 2, abc, 23.5, 3.0ms ]
1
2
abc
23.5
3.0ms
where 操作
可以在数组后面附带一个where语句,对数组元素遍历进行一个过滤条件的设置。看一段代码:sequence02.fx
package example;
import java.lang.System;
function factors(n:Number) {
return for (i in [1 .. n/2] where n mod i == 0) i;
}
for (i in factors(56)) {
System.out.println(i);
}
for表达式的值是每次循环的返回值所组成的一个数组,所以这里factors的返回值是一个数组,元素为符和整除56的条件。
#javafxc sequence02.fx -d .
#javafx example.sequence02
1.0
2.0
4.0
7.0
8.0
14.0
28.0
where的另一种比较简便的写法
var s = [1,2,3,4,5];
for (i in s[n|n mod 2 == 0]) {
System.out.println(i);
}
indexof 操作
在for代码块中可以用indexof 操作符,得到当前元素的下标。
package example;
import java.lang.System;
var nums = [1..5];
var numsExceptTheFirstTwo = nums[n|indexof n > 1]; // returns 3,4,5
for ( i in numsExceptTheFirstTwo) {
System.out.println("{indexof i}:{i}");
}
#javafxc sequence03.fx -d .
#javafx example.sequence03
0:3
1:4
2:5
数组增删改
insert:插入一个新元素
insert x into seq
insert x before seq[idx]
insert x after seq[idx]
delete:删除一个元素
delete seq
delete x from seq
delete seq[idx]
delete seq[a..b] // 删除一个片段
一个完整的例子:sequence04.fx
var nums = [1..5];
var x = 6;
insert x into nums; // result is [1,2,3,4,5,6]
x++;
insert x before nums[0]; // result is [7,1,2,3,4,5,6]
x++;
insert x after nums[3]; // result is [7,1,2,3,8,4,5,6]
// DELETE EXAMPLES
nums = [1..5];
delete 2 from nums; // result is [1,3,4,5]
delete nums[0];// result is [3,4,5]
nums = [1..10]; // result is [1,2,3,4,5,6,7,8,9,10]
delete nums[3..7]; // result is [1,2,3,9,10]
delete nums; // result is []
nums = [1..10];
delete nums[5..]; // result is [1,2,3,4,5]
delete nums[0..>]; // result is [5]
数组元素倒置:
var nums = [1..5];
reverse nums; // returns 5,4,3,2,1
- JavaFx中文入门教程--数组
- JavaFx中文入门教程- 概述
- JavaFx中文入门教程--JavaFx的数据类型
- JavaFx中文入门教程--JavaFx操作符
- JavaFx中文入门教程--JavaFx中的语句和表达式
- JavaFx中文入门教程--JavaFx中的类和对象
- JavaFx中文入门教程--从Hello World开始
- JavaFx中文入门教程--属性和函数
- JavaFx入门教程
- javaFx数组
- JavaFx入门教程(一)
- JavaFx入门教程(二)
- JavaFX完全中文手册
- JavaFX完全中文手册
- javafx中文教程
- JavaFX入门教程1——hello world
- JavaFX 8 教程 (中文)
- JAVAFX中文、OSGI、ECLIPSE开源资料
- AXIS学习笔记(四)
- JavaFx中文入门教程--从Hello World开始
- 资源文件传参数(转码)
- JavaFx中文入门教程--JavaFx的数据类型
- 多写写博客才有益于记录及记忆
- JavaFx中文入门教程--数组
- JavaFx中文入门教程--JavaFx中的语句和表达式
- ASP.NET学习之一 角色和用户配置文件
- WindowsServer2003 + IIS6.0 + ASP + NET + PHP + PERL + MSSQL + MYSQL 最新服务器安全设置技术实例
- Css Notes
- JavaFx中文入门教程--JavaFx操作符
- 实现 ArrayList 的 IComparer排序
- JavaFx中文入门教程--JavaFx中的类和对象
- ASP中常用的轉義字符及編碼