asdtiang的博客 感謝blogjava提供的博客交流平臺

          JAVA FX語法學習-----序列

          Posted on 2010-01-15 12:58 asdtiang 閱讀(695) 評論(0)  編輯  收藏 所屬分類: java fx學習筆記

          創建序列的一種方法是顯式列出其各個項。每個項都用一個逗號進行分隔,列表用方括號 "[" 和 "]" 括起來。例如,下面的代碼:

          def weekDays = ["Mon","Tue","Wed","Thu","Fri"];
           

          聲明了一個序列并將其賦給 weekDays。我們在這個例子中使用了 def, 因為在創建序列后我們不打算改變它的值。這里,編譯器知道我們打算創建一個“字符串序列”,因為每個項都聲明為 String 字面值。如果序列是使用 Integer 聲明的(例如,def nums = [1,2,3];), 編譯器將知道我們打算創建“整數序列”。

          您還可以顯式指定序列的類型,方法是修改序列的聲明,使其包含后跟 "[]" 的類型名稱。

          def weekDays: String[] = ["Mon","Tue","Wed","Thu","Fri"];
           

          這會通知編譯器 weekDays 將用來存放 String 序列(而不是單個 String)。

          您還可以在序列中聲明其他序列:

          def days = [weekDays, ["Sat","Sun"]];
           

          在這種情況下,編譯器將自動平展開嵌套的序列以構成單個序列,這樣上面的代碼就等效于:

          def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
           

          還可以通過簡化表示法來更方便地創建可構成等差數列的序列。要創建一個由數字 1 至 100 構成的序列,請使用以下代碼:

          def nums = [1..100];

          您可以使用布爾表達式(又稱為謂詞)聲明一個為現有序列的子集的新序列。例如,請考慮以下代碼:

          def nums = [1,2,3,4,5];
           

          要創建第二個序列(基于此第一個序列中的項)但僅包含大于 2 的數字,請使用以下代碼:

          def numsGreaterThanTwo = nums[n | n > 2];
           

          可以將上面的代碼行用中文表示為:“從 nums 序列中選擇項值大于 2 的所有項并將這些項賦給名為 numsGreaterThanTwo 的新序列。”以粗體突出顯示的“項值大于 2”子句是謂詞。

          在這些代碼中:

          1. 新創建的序列存儲在 numsGreaterThanTwo 中。
          2. 代碼 nums[n | n > 2]; 中標記為粗體的部分指定要從中復制項的原始序列。在我們的示例中,nums 是原始序列的名稱。
          3. 這會選擇 nums 中的項,并按順序返回一個由使表達式為 true 的項構成的新序列。
          4. "|" 字符用來在視覺上將變量 "n" 與代碼的其余部分隔開:nums[n | n > 2];
          5. 代碼 nums[n | n > 2]; 中標記為粗體的部分定義一個布爾表達式,該表達式指定將當前項復制到新序列中時需要滿足的條件。

          序列中的項是按數字索引(從 0 開始)進行訪問的。要訪問單個項,請鍵入序列名稱,后跟該項的數字索引(用方括號括起來):

          def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];

          println(days[0]);
          println(days[1]);
          println(days[2]);
          println(days[3]);
          println(days[4]);
          println(days[5]);
          println(days[6]);
           

          這會將以下內容輸出到屏幕上:

          Mon
          Tue
          Wed
          Thu
          Fri
          Sat
          Sun
           

          您還可以使用后跟序列名稱的 sizeof 運算符來確定序列的大小:

          sizeof days
           

          以下代碼會將 "7" 輸出到屏幕上:

          def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
          println(sizeof days);
           

          insert 關鍵字可用于在序列中特定項的前面后面插 入一個項。


          注:從技術上講,序列是不可變的,即一經創建就永不更改。在修改序列(例如通過插入或刪除項)時,會在后臺創 建一個新序列并重新指定序列變量,這會給人一種序列已被修改的印象。

          讓我們通過重新創建 days 序列來對此進行研究。請注意,我們現在用 var 來聲明變量 days,因為我們會在創建原始序列后改變它的值:

          var days = ["Mon"];
           

          此時,該序列僅包含一個項 "Mon"

          我們可以使用 insertinto 關鍵字在該序列的末尾插入 "Tue"

          insert "Tue" into days;
           

          類似地,我們也可以添加 "Fri""Sat""Sun"

          insert "Fri" into days;
          insert "Sat" into days;
          insert "Sun" into days;
           

          該序列中現在包含:"Mon""Tue""Fri""Sat""Sun"

          我們還可以使用 insertbefore 關鍵字在給定索引處的項前面插入一個項。請記住,索引是從 0 開始的,因此,在當前的序列中,"Fri" 位于索引位置 2。因此,我們可以在 "Fri" 前面插入 "Thu",如下所示:

          insert "Thu" before days[2];
           

          該序列中現在包含:"Mon""Tue""Thu""Fri""Sat""Sun"

          要在 "Tue" 后面插入 "Wed",我們可以使用 insertafter 關鍵字:

          insert "Wed" after days[1];
           

          該序列現在包含一周中的每一天:"Mon""Tue""Wed""Thu""Fri""Sat""Sun"

          通過使用 deletefrom 關鍵字可以輕松地從序列中刪除項:

          delete "Sun" from days;
           

          該序列中現在包含:"Mon""Tue""Wed""Thu""Fri""Sat"

          還可以刪除位于特定索引位置的項。以下代碼從該序列中刪除 "Mon"(請記住,"Mon" 是第一個項,因此它的索引位置為 0)。

          delete days[0];
           

          要刪除序列中的所有項,請使用后跟序列名稱的 delete 關鍵字:

          delete days;
           

          請注意,delete 僅從序列中刪除項,而不從腳本中刪除 days 變量。您仍可以像以前那樣訪問 days 變量并向其中添加新項。

          使用 reverse 運算符可以輕松地顛倒序列中項的次序:

          var nums = [1..5];
          reverse nums; // returns [5, 4, 3, 2, 1]
           

          有時,您可能希望對序列進行比較,看它們是否相等。序列是按值來比較是否相等的:如果它們的長度相同而且各個項相等,則它 們相等。

          讓我們創建兩個具有相同內容的序列來對此進行測試:

          def seq1 = [1,2,3,4,5];
          def seq2 = [1,2,3,4,5];
          println(seq1 == seq2);
           

          表達式 seq1 == seq2 的值為 true,因為這兩 個序列具有相同數量的項,而且這兩個序列中每個項的值都相等。因此,這些代碼會將 "true" 輸出到屏幕上。

          通過更改其中一個序列中項的數量(而不更改另一個序列),這兩個序列現在具有不同的長度:

          def seq1 = [1,2,3,4,5];
          def seq2 = [1,2,3,4,5,6];
          println(seq1 == seq2);
           

          由于第二個序列比第一個序列長,從而這兩個序列不相等,因此該腳本的輸出為 "false"。

          我們還可以通過更改項的值來使兩個序列不相等(即使這兩個序列的長度仍相同):

          def seq1 = [1,2,3,4,5];
          def seq2 = [1,3,2,4,5];
          println(seq1 == seq2);
           

          由于這兩個序列不相等,因此這些代碼將再次輸出 "false"。

          序列子集提供對序列某些部分的訪問。

          seq[a..b]

          此語法提供對位于索引 a 和索引 b之間(含 a 和 b)各個項的訪問。以下腳本創建一個 weekend 序列,其中僅包含 "Sat""Sun" 項。

          def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
          def weekend = days[5..6];
           

          seq[a..<b]

          使用 "<" 字符可以訪問位于索引 a 和索引 b 之間(含 a,不含 b)的項。我們可以對 days 使用此方法來創建一個 weekdays 序列,其中包含項 "Mon""Fri"

          def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
          def weekdays = days[0..<5];
           

          seq[a..]

          通過省略第二個索引,可以訪問從索引 a 到序列末尾處的所有項。為了與上一個示例保持一致,我們可以按如下方式創建 weekend 序列:

          def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
          def weekend = days[5..];
           

          seq[a..<]

          最后,您可以使用不帶第二個索引的 "<" 來訪問從索引 a 到序列末尾處的所有項(不 含最后一項)。

          def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
          def days2 = days[0..<];
           

          此版本會創建一個 days2 序列,其中包含項 "Mon""Sat"




          天蒼蒼,野茫茫,風吹草底見牛羊

          posts - 80, comments - 24, trackbacks - 0, articles - 32

          Copyright © asdtiang

          asdtiang的博客 PaidMailz
          點擊廣告網賺A(每天4個廣告,每個0.0025美元,一個搜索廣告0.03美元)
          主站蜘蛛池模板: 若尔盖县| 巨野县| 黔江区| 岳阳市| 秦皇岛市| 胶州市| 航空| 金华市| 四子王旗| 沙湾县| 冀州市| 望谟县| 佛山市| 扎鲁特旗| 镇原县| 永定县| 合川市| 嘉定区| 瑞丽市| 额尔古纳市| 延长县| 道孚县| 襄汾县| 北海市| 疏勒县| 富阳市| 大名县| 灵璧县| 新乡县| 兴义市| 玉溪市| 互助| 巴青县| 左贡县| 韩城市| 六盘水市| 中西区| 扶绥县| 四会市| 图们市| 南投县|