2015/11/22 時点での本文

1. Data Structures Overview
●Learn
In the previous lesson, you learned a few of the 
object-oriented programming concepts used in Java: 
classes, objects, methods, and inheritance. In this lesson, 
you will learn how to use some of the classes and methods 
built into Java to write programs to create, manipulate, and 
store information in data structures.  
前回、私たちは、Javaにおける、オブジェクト指向プログラミング の、方法を、
いくつか学びました。
	- class
	- オブジェクト
	- メソッド
	- 継承
この最後のチャプターでは、
 データ構造*
において、データの、
 ・作成
 ・操作
 ・保存
を、するためのプログラムの書き方を、学びます。
言い換えると、
 Javaはすでに、データ構造のclass を、
 最初から持っているので、
 その class や、メソッド の使い方を、覚えること
と言えます。
* データ構造:
それは、だいぶ難しいです、、私は、配列 ぐらい しか知りません。
でも、ここで、出てくるのは、そんなに難しいものでは、ないでしょう。
 [りんご:100円、みかん:70円、柿:80円]
イメージとしては、こんな感じです。
Map や ArrayList などは、少しやったことがあるので、
何とか最後までいけると思っています。
また、エクセルな感じの、データベース とは、少し違いますので、
注意してください。
データベース は、データ構造の中のひとつ、、
と言えると思うのですが。 Instructions
1.
Take a look at the code in the editor below. You'll learn 
how to use them to create, store, and manipulate data in 
data structures.
	・・・
Click Run to run the code.
右のエディタを、見てください。
このチャプターが終わるときには、
このコードが読めることを目指してがんばりましょう。
私たちはこれから、
 ・データ構造の作成
 ・データの保存
 ・データの操作
の、ハウツーを、Java が、持っている class を使って、
学んでいきます。
	・・・
ためしに、エディタ右下の、Run をクリックして、
そのアクションを眺めてみましょう。




[Next]
2. For Loop(for文)
●Learn
When you provide a set of instructions in a method, you 
might find that a common task is to manipulate an entire 
set of data. Java conveniently provides control statements 
to run a task repeatedly. The control statement we will 
explore is called the for loop.
	・・・
The for loop repeatedly runs a block of code until a 
specified condition is met.
	・・・
The example below shows how a for loop is used:
for (int counter = 0; counter < 5; counter++) {

    System.out.println("The counter value is: " + counter);

}
The statements within the parentheses of for loop compose 
the following parts:
1.
Initialization: the int variable named counter is initialized to 
the value of 0 before the loop is run.
2.
Test condition: the Boolean expression counter < 5 is 
a conditional statement that is evaluated before the code 
inside the control statement is run every loop. If the 
expression evaluates to true, the code in the block will run. 
Otherwise, if the expression evalutes to false, the for loop 
will stop running.
3.
Increment: Each time the loop completes, the increment 
statement is run. The statement counter++ increases the 
value of counter by 1 after each loop.
	・・・
In the example above, the for loop initially executes the 
code block in the sample code above because the initial 
value of counter is less than 5, which passes the test 
condition.
	・・・
The value of counter is then incremented by 1 in the 
increment.
	・・・
The code block will execute again because counter is still 
less than 5. This cycle will continue until counter is no 
longer less than 5.
	・・・
Please note that similar to the if-then statement, no 
semicolon is necessary.
あるメソッド の中で、アクションを、たくさん書いたとき、
すべてのデータに、同じ タスク/仕事 をする時が、あることに、
気づくでしょう。
Javaも、もちろん、そんなときのための、便利な方法 を、持っています。
そんな同じタスクを、繰り返すための構文を、
 for文(for loop)
と言います。
	・・・
for文 では、コードブロック( { から } の間 ) にある、
文/コード/アクション のセットが、ある条件が、満たされている間は、
ひたすら繰り返されます。
	・・・
これは、for文 のアクションを見るための、例です:
for (int counter = 0; counter < 5; counter++) {
    System.out.println("変数counterの値:" + counter);
      // 文字列と数値の連結*1
}
for文 の、最初の (    ) の中は、こんな仕組みです。
  // (int counter = 0; counter < 5; counter++) の部分.
1. 
[初期化]
int型変数counter は、ループ/繰り返し が、始まる前に、
値 は、0 に、セットされています。
2.
[条件が満たされているか、テスト]
ブーリアン式
 counter < 5
が、条件文になります。
そして、true であれば、
コードブロック/{ から } まで
が、実行されるわけです。
そして、この、「ブーリアン式…counter < 5」 は、
繰り返しのたびに判定されます。
そして、その 値 が、false であれば、
for文 は、その時点で、終了です。
3.
[インクリメント(increment)/ 値を 1 増やす]
コードブロック/{~} が、実行された後、
  counter++
が、実行されます。
ここには、「セミコロン/;」 を、書かないことに注意しましょう!
(ただし、この場所で使わないときは、「counter++;」
 と書くのが、正解です)
この、
  ++
は、
 値を 1 増やす
ための演算子です。
4.
そして、再び、
  counter < 5;
で、コードブロック を、実行するかを、決定します。
	・・・
では、このコードが、どんなアクションをするのか、見ていきましょう。
まず、変数counter は、0 に、設定されるので、
「counter < 5」 の条件文に、パスします。
よって、コードブロックは、実行されます。
	・・・
そして、変数counter は、「counter++」 によって、
値 が、1 増えます。
	・・・
counter が、1 増えた後も、「counter < 5」 に、
合格ですね、、よって、再び、コードブロック は、実行されます。
こんな風にして、counter が、5より、小さい限りは、
コードブロックが、実行されるわけです。
	・・・
この for文も、if文 や if/else文 などのように、
コードブロックの後に、「セミコロン/;」は、必要ありません! 
*1 文字列 について:
私のような、Javaの未熟者 が、説明するのは、
多少しんどいので、出来れば、避けようと思っていましたが、
これは、基本的で、大事なトピックなので、がんばって書きました。
間違ったことを書かないためにも、基本的な話だけします:
まず、
 文字列 は、Java では、Stringオブジェクト
です、、つまり、Stringクラス の、オブジェクト です。
そして、「引用符/"」を両側につけると、
それだけで、Stringオブジェクト になります。
こんな風に、文字列は、特別扱いなルールがあって、
普通だったら、
  String str = new String("ストリング");
などで作るべきでしょうが、実は、
  String str = "ストリング";
で、String型オブジェクトstr の値は、すでに、
"ストリング"です。
そして、
 文字列の連結
 文字列と数値の連結(たしざん)
という、また特別扱いなルールがあります。
まず、文字列の連結 の場合、
 String str = "もじ" + "れつ";
とすれば、str の値は、"もじれつ" になりますし、
さらに、、、なんと、、、
 String str = "もじれつ:" + 4 + "文字です";
とすれば、
 int型 の、4 が、文字列の "4" となり、
(数値リテラルの整数の値はint型の値として扱われます)
その結果、
 str の値は、
 "もじれつ:4文字です"
となるのですね。
ちょっと、洞察力のある人には、
なんかへんだなあ~、
 "変数counterの値:" + counter
というのは?
と、気づくと思いますし、
プログラミングでは、そういうことに気づくことは、
大事なので、説明いたしました。 Instructions
1.
The for loop in the code editor is currently missing the 
three statements required to execute the code in the block. 
Finish the for loop by typing:
for (int waterLevel = 0; waterLevel < 7; waterLevel++) {

}
Leave the rest of the code inside the for loop as is.
右のエディタを、見てください。
for文の ( ) の中の、3つの 文 が、欠けていますね。
for (int waterLevel = 0; waterLevel < 7; waterLevel++) {
	// water level - 水位
	// この部分は、変更しないでください!
	// The pool's water level is at " + waterLevel + " feet.
		// このプールの水位は waterLevel フィートです.
}
このコードを、見て、欠けている部分を、完成させてください。




[Next]
3. ArrayList
●Learn
Fantastic! For loops will be useful when reading and 
manipulating Java data structures. Let's talk about a few 
data structures that are built into Java. The first data 
structure we will explore is called the ArrayList.
	・・・
The ArrayList stores a list of data of a specified type. Let's 
go through an example of how to create, or declare, an 
ArrayList of type Integer.
ArrayList<Integer> quizGrades = new ArrayList<Integer>();
ArrayList is a pre-defined Java class. To use it, we must 
first create an ArrayList object.
	・・・
In the example above, we create an ArrayList object called 
quizGrades that will store data types belonging to the 
<Integer> class (whole numbers).
Fantastic!、for文 は、データ構造 を、読みたい時、操作したい時に、
便利です。
では、これから、Java が、最初から持っている、
データ構造 の class について、いくつかお話しましょう。
最初は、
	ArrayList
です。
	・・・
ArrayList は、ある特定された データ型 を、保存します。
ここでは、Integer*1 の データ での、ArrayListオブジェクト の、
作り方 を、見てみましょう。
ArrayList<Integer> quizGrades = new ArrayList<Integer>();
このコードで、ArrayList型オブジェクト 
quizGrades(クイズのレベル)を、作っています。
これで、ArrayListオブジェクト を、使えるようになりました。
	・・・
この quizGradesオブジェクトは、Integerオブジェクト を、保存することが、
出来ます。
*1 Integerクラス:
Integerオブジェクト を、簡単に言うと、
プリミティブタイプ である int を、オブジェクト に、したもの、、
なんだそれは?、、つまり、Integerオブジェクト には、
メソッド があるのです。
例えば、toString() は、Stringオブジェクト に、変換します。
しかし、Java に、慣れて、実際にコーディングしないと、
分からないと思います。でも、なんとなく分かった?
私も、意味はわかっても、使い道などは、
経験不足のため、思いつきません。 Instructions
1.
Inside of the main method, create an ArrayList object 
called weeklyTemperatures that will store Integer data 
types.
main()メソッド の中に、ArrayListオブジェクト を、作ってください。
オブジェクトの名前は、weeklyTemperatures です。
そして、この weeklyTemperaturesオブジェクト は、
Integerオブジェクト を、データにする仕様 にしてください。
本文の、サンプルコード を、真似れば、簡単です!
* weeklyTemperatures - 1週間の気温リスト




[Next]
4. ArrayList: Manipulation(ArrayListを操作しよう)
●Learn
You created an ArrayList in the last exercise to store 
temperature data, but it does not contain any values yet.
	・・・
Let's add some values of type Integer to the ArrayList, one 
by one, like this:
ArrayList<Integer> quizGrades = new ArrayList<Integer>();
quizGrades.add(95);
quizGrades.add(87);
quizGrades.add(83);
In the example above, we call the add method on 
quizGrades. The add method adds integers to the 
ArrayList. The values 95, 87, and 83 are added to the list.
前回では、気温データ を、保存するための、
ArrayListオブジェクト weeklyTemperatures を、作りました。
でも、データは、まだ空っぽです。
	・・・
ということで、これから、ArrayListオブジェクト に、Integer型データ を、
加える方法を、見ていきましょう。
このコードのように、一つ一つ、加えていきましょう。
ArrayList<Integer> quizGrades = new ArrayList<Integer>();
quizGrades.add(95);
quizGrades.add(87);
quizGrades.add(83);
これは、ArrayListオブジェクト quizGrades を使って、
add()メソッド を、呼び出しています。
add()メソッドは、指定された型の要素 を、リストの最後に加えて行きます。
そして、958783 が、加えられました。 
* このコードを、見ると、
int値 を、加えているように見える?なぜなら、
 数値リテラルの整数の値はint型の値として扱われます.
ということからですが、、なので、本来なら、
 arrayListObject.add(new Integer(95));
のようにすべきなのでは、と、私は、思ったのでした。
add()メソッド は:
 public boolean add(E e)
  // E は、指定されたクラス型
と、Oracle の、ドキュメンテーションにもなっているし。
ためしに、IntelliJ で、
ArrayList<Integer> arListObj = new ArrayList<Integer>();
        arListObj.add(new Integer(3));
        arListObj.add(4);
        /*
        System.out.println(arListObj.get(0));
        	// 3 を、プリントアウト.
        System.out.println(arListObj.get(1));
        	// 4 を、プリントアウト.
        */
と、書いてみましたが、両方とも、OKでした。
と言うことは、
	arListObj.add(4);
の方の、4 は、暗黙で、
	new Integer(4)
に変換されると言うことだと思います。
細かいかもしれませんが、ここで、私のように悩む人もいると思いますので、
一応、考察してみました。 Instructions
1.
Add some temperatures to weeklyTemperatures. First, add 
a temperature value of 78.
いくつかの、気温データ を、weeklyTemperaturesオブジェクト に、
加えてみましょう。
まず、気温データ、78 を、加えましょう。

2.
Next, add a temperature of 67.
次に、加えるのは、67 です。 

3.
Add another temperature of 89.
その次に、加えるのは、89 です。 

4.
Finally, add a temperature of 94.
最後に、94 を、加えてください。
ここも、サンプルコードを、見れば、難しくないですね! 




[Next]
5. ArrayList: Access
(ArrayListオブジェクトのデータにアクセス!)
●Learn
Great! Now we can start accessing the temperatures that 
our ArrayList stores.
	・・・
We can access the elements of weeklyTemperatures by 
using an element's index, or position, in the list.
	・・・
An element's index refers to its location within an ArrayList. 
ArrayLists in Java are zero-indexed, which means that the 
first element in an ArrayList is at a position of 0.
	・・・
Here is an example of accessing the element in the first 
position of the list:
ArrayList<Integer> quizGrades = new ArrayList<Integer>();
quizGrades.add(95);
quizGrades.add(87);
quizGrades.add(73);
System.out.println( quizGrades.get(0) );
The example above will print out the grade value of 95.
	・・・
The index of the element containing the value 95 is at 
position 0 in the ArrayList. We access the value by 
providing its index to the get method.
やった!、これで、ArrayListオブジェクト、weeklyTemperatures の、
気温データに、アクセスできますね。
	・・・
ArrayListオブジェクト のデータにアクセスするには、
リストの、インデックスナンバー を、使います。
ただし、インデックスナンバー は、
 0 から始まる
ので、注意が必要です!
つまり、一番最初にあるデータにアクセスするには、
インデックス 0 を、使ってアクセスするわけです。
しからば、2番目のデータにアクセスするには?
そうです、、インデックス は、1 になります。
	・・・
これは、ArrayListオブジェクト の、最初にあるデータに、
アクセスするコードです。
ArrayList<Integer> quizGrades = new ArrayList<Integer>();
quizGrades.add(95);
quizGrades.add(87);
quizGrades.add(73);
System.out.println( quizGrades.get(0) );
このコードを、実行すると、95 を、プリントアウトすることになります。
インデックス 0 の、値 を、get/ゲット しているからです。
	・・・
このコードを見て分かるように、
ArrayListオブジェクトのデータにアクセスするには、
インデックス(index) を、パラメータ にした get()メソッド を、使います。
 // public E get(int index)
  // E は、指定された型、、Oracleのドキュメンテーションより. Instructions
1.
Use the get method to print out the lowest temperature 
contained in weeklyTemperatures.
ArrayListオブジェクト の、get(int index)メソッド を使って、
weeklyTemperaturesオブジェクト の、
一番気温が低いデータを、コンソールウィンドウに、プリントアウトしてください。
0 から数えて、インデックス を、決めることに注意してください!




[Next]
6. ArrayList: Insertion
(加えたいインデックス位置に、データを加える)
●Learn
We can also insert new elements into an ArrayList.
	・・・	
To insert new elements into an ArrayList, we can use a 
slightly different version of the add method that you 
previously used:
ArrayList<Integer> quizGrades = new ArrayList<Integer>();
quizGrades.add(95);
quizGrades.add(87);
quizGrades.add(73);

quizGrades.add(0, 100);
System.out.println( quizGrades.get(0) );
The example above will print out the grade 100.
	・・・
The add method will insert the grade 100 at the first 
position (0) into the list. Since it inserts a new element into 
the beginning of the ArrayList, all other element indices will 
be shifted one position higher. The grade 95 is now at 
index 1.
また、私たちは、ArrayListオブジェクト に、
 新しいデータ を、
 挿入(そうにゅう)
することも出来ます。 
* 置き換えるのではなく、追加 なのを、確認しました.
[構文]
public void add(int index, E element)
リスト内の指定された位置に指定された要素を挿入します。その位置とそれ
以降に要素があればそれらを右に移動させ、各要素のインデックスに 1 を加
えます。
[パラメータ]
index - 指定の要素が挿入される位置のインデックス
element - 挿入される要素
	- Oracle ドキュメンテーション より -
	・・・
add(int index, E element)メソッド は、
前回出てきた、add(E element)メソッド と、違うバージョンの、
add()メソッド です。
	ーーー
ArrayList<Integer> quizGrades = new ArrayList<Integer>();
quizGrades.add(95);
quizGrades.add(87);
quizGrades.add(73);
quizGrades.add(0, 100);
System.out.println( quizGrades.get(0) );
	ーーー
このコードを実行すると、100 を、コンソールウィンドウ に、
プリントアウトします。
	・・・
どうしてそうなるか?は、お分かりですね、、
 quizGrades.add(0, 100);
というコードで、インデックス 0 の位置 に、100 を、挿入して、
 System.out.println( quizGrades.get(0) );
というコードで、get()メソッドで、インデックス 0 の 値 を、ゲットして、
コンソールウィンドウ に、プリントアウトする、、System.out.… を、
使っているからですね。
そして、この新しい 値100 が、先頭のインデックス0 に入ったことによって、
残りのすべての値 は、シフトして、インデックスの数 が、一つずつ、
上がります。
つまり、グレード95を表す 95 は、
インデックスが、0 から、1 に繰り上がるわけです。 Instructions
1.
Insert a new temperature of 111 at index 2.
華氏111℉ を、表す、新しい気温データ、111 を、
インデックス 2 の位置に、挿入してください。 

2.
On the next line, use the get method to print out the 
temperature 89.
次の行で、get(int index)メソッド を使って、
コンソールウィンドウに、 華氏89℉ を、表す、89 を、
プリントアウトしてください。  

* ここでも、本文のサンプルコードが、大いに参考になります。




[Next]
7. Iterating over an ArrayList
(ArrayListオブジェクトのデータすべてを、順番に調べる)
●Learn
Earlier in this lesson, we learned about the for loop. Since 
we've also learned how to retrieve the value at a specific 
index of an ArrayList, we can now access each of the 
elements.
for (int i = 0; i < quizGrades.size(); i++) {

    System.out.println( quizGrades.get(i) );

}
In the example above, the for loop above includes the 
following statements:
	・・・
Initialization: int variable i is set to 0 which is the first index 
of an ArrayList.
Test condition: the code in the block will run as long as i is 
less than the size of quizGrades.
Increment: The code in this block will execute after each 
loop. In this case,i will increment by 1 with i++ after each 
loop.
The size method returns an int that represents how many 
total elements are stored within quizGrades. The example 
will print out each element within quizGrades in order. The 
process of going through each element in the ArrayList is 
called iteration.
このチャプターのはじめの方で、
 for文
を、やりました。
いよいよ for文 を、クールに使うときがやってきました!
前回、あるインデックス にある、データを、回収/ゲット する方法を、
学んだのですから、for文 と組み合わせると、
 ArrayListオブジェクト にある、すべての 値/データ を、
 回収すること
が、出来ます!
さて、どうやってやるのでしょうか?
for (int i = 0; i < quizGrades.size(); i++) {
    System.out.println( quizGrades.get(i) );
}
このコード を、使えば、それが出来ます。
まずは、for文 を、復習して、このコードを、読めるかどうかを、
試してほしいところです。 
* これは、あくまで、私の感想ですが、
プログラミング言語には、ほぼ共通の、制御文が、、
例えば、if/else文 などですが、、あります、、が、
for文 が、一番慣れるまでに時間がかかり、難しい感じがします。
switch文 や 三項演算子 は、構文に慣れるのに、時間がかかる
と思いますが、ロジックは、そんなに難しくないです。
なんといっても、for文 が、一番ややこしい感じがします。
これを、使えるようになるのが、まず、プログラミングが出来る、
第1ステップなのかもしれません。
そして、プログラマーが書くのは、制御文 だとも、
ある意味言えると思います。
class の使い方などは、「知識」の部分になると思いますから。
	・・・
この for文 のロジックが理解できるか試すために、
size()メソッド が、分からないと、困りますね。
	ー Oracleドキュメンテーションより、ArrayListクラス の、size() -
[構文]
public int size()
リスト内にある要素の数を返します。
[戻り値]
リスト内の要素数
	・・・
ヒント:
変数 i を、
 初期化で、0 にしている
かつ、
 i < 要素数
となるので、
要素数の数だけ繰り返されることになります。
< なので、要素数 の数 より、一つ小さい時点 で、for文 は、
終了するのですが、
 0 から始まっているので、
それで、いいのです。この、「0から始まっている」のが、ポイントです。
	・・・
1. 初期化
int型変数 i が、0 に設定されます。
それは、ArrayListオブジェクト の、最初の、インデックス と、
一致しますね。
2. 条件チェック
コードブロック は、i の 値 が、要素数 と、同じになったら、
実行されなくなります。
条件は、「i < ArrayListオブジェクト.size()」 でしたね。
 // オレンジ色のところに、size()メソッド の詳細は、書いておきました。
 // つまりここでは、quizGradesオブジェクト の データ数を、返します。
3. インクリメント/一つ値を増やす(i++)
コードブロックを実行したら、i の値 が、一つ増えます4. 再び、条件チェック です
i の値 が、インクリメント されたら、
再び、条件チェックをします。
条件チェック に、合格すれば、コードブロックが、実行されますね。
	・・・
size()メソッド は、ArrayListオブジェクト/quizGradesオブジェクト の、
データ数/要素数 を、int型 で、返します。まとめると、
このコードは、インデックス の 値 を、一つずつ上げながら、それに該当する、
気温データを表す、int型 の値 を、ゲットし、
それを、おなじみの System.out... を、使いながら、順番に、
コンソールウィンドウ に、プリントしていくと言う仕組みになっているわけです。
このように、ArrayListオブジェクト などの、リスト を、順番に、巡回すること、
を、イテレーション(iteration)と言います。 Instructions
1.
Inside of a for loop, print out the elements of the 
weeklyTemperatures ArrayList. Use the get method and 
the int variable j. You can use the example above as 
reference.
だんだん難しくなってきました!、
とくコツの基本は、サンプルコードを理解して、真似ることです!
for文 を、使います。
そして、そのコードブロック/{ ~ } の中で、
おなじみの、System.out... を、使って、
weeklyTemperaturesオブジェクト の 要素/気温データ を、
順番に、コンソールウィンドウ に、プリントアウトしてください。
ヒントは、get()メソッド を、使います。
 // これは、本文 の、サンプルコードを見れば分かりますね。
そして、ここでは、int型変数 j を、
 for文 での、
  初期化
  条件チェック
  インクリメント
のために使ってください。
この問題を解くためには、繰り返しますが、
 サンプルコードの理解と、上手くまねること
です、、が、
見落とし や、書き間違い にも、注意してください。




[Next]
8. For Each Loop(拡張for文/for-each文)
●Learn
Since most for loops are very similar, Java provides a 
shortcut to reduce the amount of code required to write the 
loop called the for each loop.
	・・・
Here is an example of the concise for each loop:
for (Integer grade : quizGrades){
    System.out.println(grade);
}
In the example above, the colon (:) can be read as "in". 
The for each loop altogether can be read as "for each 
Integer element (called grade) in quizGrades, print out the 
value of grade."
	・・・
The loop will print out the value of each Integer element in 
quizGrades.
	・・・
Note: the for each loop does not require a counter.
for文 ってのは、たいてい似通っているので、
Java は、ループ/繰り返し のために書くコードの量を減らして楽に書く
ための、
 for-each文(for each loop)
という、ショートカット/簡単実行できる方法 を、新たに加えました。 
* ただし、これは、「配列」 や 「コレクション フレームワーク」 に対して、
使う文 のようです。詳細は、私には、分かりません。
たしかに、for文 より、簡単簡単!、かと言って、for文 が、
いらなくなったわけではないでしょう。なぜなら、もし、いらないのであれば、
紹介するわけありませんね。
	・・・
これは、前回のコード を、for-each文 を、使って書いたものです:
for (Integer grade : quizGrades){
    System.out.println(grade);
}
このコードの意味するところは、forループ(for文のこと)を、使って、
ArrayList型 の quizGradesオブジェクト:/in/中/ の、
Integer型オブジェクト変数 grade を、すべて、返し/回収
しなさい。
と言っているわけです。そして、System.out... を使って、
プリントアウトしています。
	・・・
この、for-each文 の場合、これで、完結です。
初期化 や、条件判定、インクリメント のために、
よく使われる、変数 i や j は、必要ありません。
各ポジション/構文の仕組み さえ覚えてしまえば、
ロジックを深く考えることなく、目的のアクションを、
すばやく行えますね。 Instructions
1.
The current block of code in the code editor is incomplete. 
Finish the for each loop by typing:
for (Integer temperature : weeklyTemperatures) {
    System.out.println(temperature);
}
右のエディタの、for文は、for文でも、for-each文 のための、
コードですが、未完成です。
その部分の完成形は、このコードです:
for (Integer temperature : weeklyTemperatures) {
    System.out.println(temperature);
}
このコード見て、エディタの中のコードを、完成させてください。
少しでも、覚えるために、コピペは、やめましょう。 




[Next]
9. HashMap(HashMapクラス)
●Learn
Great! Another useful built-in data structure in Java is the 
HashMap.
	・・・
Although the name of the data structure might not make 
sense to you immediately, think of it as a real-life 
dictionary. A dictionary contains a set of words and a 
definition for each word. A HashMap contains a set of keys 
and a value for each key.
	・・・
If we look up a word in a dictionary, we can get the 
definition. If you provide a HashMap with a key that exists, 
you can retrieve the value associated with the key.
	・・・
Declaring a HashMap is shown in the following example:
HashMap<String, Integer> myFriends
  = new HashMap<String, Integer>();
In the example above, we create a HashMap object called 
myFriends. The myFriends HashMap will store keys of 
String data types and values of type Integer.
	・・・
Note: the String object allows you to store multiple 
characters, such as a word in quotations (e.g. "Rats!").
Great!、今度は、HashMapクラス について、学びましょう。
	・・・
この、HashMap という名前自体は(英語がネイティブであっても)、
余りピント来ない名前かも知れません。
例えば、辞書 のことを考えてみてください。
辞書は、「調べる言葉」 と 「その意味、解説」 が、セットになっていますね。
HashMap においては、キー/key と、/value が、結びついており、
その集まりが、この、HashMap だと思ってください。 
* と言うことは、これを使って、コンピューター用語などの、暗記カードアプリ が、
出来る?HashMap に、コンピュータ用語 と、その定義 を、保存しておいて、
それを、ストレージに、Serializable/保存できる形に して、おけば、
データベース の代わりとして使えるので。
忘れないように、日記に書いておこう。でも、本当に実用化できるかは、不明!
でも、一番の問題は、私は、日記を書いたことなんかなかったな。
	・・・
もう少し具体的に言いますと、
 あなたが、辞書を使えば、その言葉 の、定義 を、得られますね。
HashMapオブジェクト の場合は、「キー」 が、あれば、「値」 に、
アクセスできる ということになります。
	・・・
このコードは、HashMap型オブジェクト myFriends を、作っています:
HashMap<String, Integer> myFriends
  = new HashMap<String, Integer>();
このコードを、もう少し詳細に見ていきましょう。
 <String, Integer>
の部分ですが、これの意味するところは、
HashMap型オブジェクト myFriends は、
 キー が、String型(オブジェクト) で、
 (キーに対応する) が、Integer型(オブジェクト)
ということです。
* もちろん キー も、’値’ なのですが、HashMap型オブジェクト での、
値 というのは、キーに結び付けられた 値 という意味で、使っています。
「要素」 という言葉で、説明しているページもありましたが、
Oracle の ドキュメンテーション などには、key, value という英語が、
日本語に混じって書かれているので、まあ、「キー と 値」 で、
覚えた方が、いいような気がします。
何しろ、Oracle の、ドキュメンテーションは、Javaプログラマにとっては、
バイブル に、相当するものだと思いますので。
	・・・
Stringオブジェクト、、、つまり、二重引用符/" で、囲まれた文字列
のことですが、、、あなたの好きな、分かりやすい言葉 を、使えます!
Stringオブジェクト の作り方は、文字列 を、二重引用符で、
囲むだけです。
例:"もじれつ" Instructions
1.
Create a HashMap object called restaurantMenu. The 
HashMap should store String keys and Integer values. Use 
the syntax in the example above if you need.
HashMap型オブジェクト restaurantMenu(レストランのメニュー)を、
作ってください。
キー は、String型オブジェクト
値 は、Integer型オブジェクト
に、します。
本文のサンプルコードを、よく理解して、真似れば、OK。




[Next]
10. HashMap: Manipulation(HashMap に、データを入れる)
●Learn
Perfect! Now let's fill the HashMap with useful data.
	・・・
Add keys and values to a HashMap:
HashMap<String, Integer> myFriends
	= new HashMap<String, Integer>();

myFriends.put("Mark", 24);
myFriends.put("Cassandra", 25);
myFriends.put("Zenas", 21);
In the example above, we used the put method to add a 
String key and an associated Integer value. The String key 
is the text inside double quotes " ". The Integer value is 
represented by the number.
Perfect!、それでは、HashMap型オブジェクト myFriends に、
データを、入れていきましょう。
	・・・
キー と 値 を、myFriendsオブジェクト に、加えるコードです:
HashMap<String, Integer> myFriends
	= new HashMap<String, Integer>();
myFriends.put("Mark", 24);
myFriends.put("Cassandra", 25);
myFriends.put("Zenas", 21);
put()メソッド を使って、キーであるStringオブジェクト と、
それに結び付けられた、であるInterオブジェクト を、
HashMap型オブジェクト myFriends に、加えています。
Stringオブジェクト は、2重引用符の間に、テキストを入れた、
こんな形、、"テキスト"、、
Integerオブジェクト は、数字 によって、表現されています。
* put() の詳細は、Oracle の APIドキュメント から、
捜してみましょう。
「フレーム」にして、左側の下のウィンドウを捜すと見つかるでしょう。
「フレーム/フレームなし」は、上の方に書いてあります。
[put()メソッド、構文]
public V put(K key, V value)
[戻り値]
keyに以前に関連付けられていた値。keyのマッピングが存在しなかった場
合はnull。戻り値nullは、マップが以前にnullとkeyを関連付けていたことを
示す場合もある。
	// こんな記述が見つかるでしょう.Instructions
1.
Let's add some food items and prices to the our menu. Use 
the put method to add a key "Turkey Burger" with the 
value 13.
restaurantMenuオブジェクト に、食べ物 と、その値段 を、結びつけて、
そのデータを、保存してみましょう。
キー を、"Turkey Burger" 、値 を、13 として、加えてください。
put()メソッド を、使います。
(ハンバーガー、13ドル 、まあこんなところでしょう、、
 私は、ハンバーガーマニアではないので、詳しくは、分かりません。)

2.
Add a key "Naan Pizza" with the value 11.
お次は、
キー に、"Naan Pizza"
値 に、11 を、加えましょう。
(ピザ、11ドル)

3.
Finally, add a key "Cranberry Kale Salad" with the value 10.
最後は、
キー に、"Cranberry Kale Salad"
値 に、10 を、加えましょう。
(サラダ、10ドル)




[Next]
11. HashMap: Access
(HashMapオブジェクトの値をキーを使って取り出す)
●Learn
To access data in an ArrayList, we specified the index. In 
order to access a value in a HashMap, we specify the key:
HashMap<String, Integer> myFriends
	= new HashMap<String, Integer>();

myFriends.put("Mark", 24);
myFriends.put("Cassandra", 25);
myFriends.put("Zenas", 21);

System.out.println( myFriends.get("Zenas") );
In the example above, we call the get method on the 
myFriends HashMap using the key "Zenas". The console 
will print the value associated with "Zenas" which is 21.
ArrayListオブジェクト の 値 に、アクセスするには、インデックス を、
使いましたが、HashMapオブジェクト の 値 にアクセスするには、
お察しのとおり、キー を、使えばいいですね。
HashMap<String, Integer> myFriends
	= new HashMap<String, Integer>();

myFriends.put("Mark", 24);
myFriends.put("Cassandra", 25);
myFriends.put("Zenas", 21);

System.out.println( myFriends.get("Zenas") );
このコードでは、
myFriendsオブジェクト を使って、
get()メソッド を、呼び出しています。
 // public V get(Object key)
  // オラクルのドキュメントより.
   // Object になっているのは、すべてのクラスは、
   // Objectクラス の、子供だから.
get()メソッドの、パラメータ に、キー を、使って、
値 を、ゲットしているわけです。
この場合の キー は、"Zenas" で、結び付けられている 値 21 を、
返すので、System.out... 文 は、21 を、コンソールウィンドウ に、
プリントアウトします。 Instructions
1.
Use the get method to print out the price of the "Naan 
Pizza" item.
get()メソッドを使って、"Naan Pizza" と、
結び付けられている 値段を意味している、 を、getして、
コンソールウィンドウに、プリントアウトしてください。
しつこいですが、本文のサンプルコードを理解して、真似ることが、
正解する方法です。




[Next]
12. Iterating over a HashMap
(HashMapオブジェクトのデータをすべて回収しよう!)
●Learn
We can also access properties of a HashMap, such as the 
number of entries or the contents of the HashMap.
	・・・
Let's access the length and print out the contents of the 
myFriends:
HashMap<String, Integer> myFriends
	= new HashMap<String, Integer>();

myFriends.put("Mark", 24);
myFriends.put("Cassandra", 25);
myFriends.put("Zenas", 21);

System.out.println( myFriends.size() );

for (String name: myFriends.keySet()) {

    System.out.println(name + " is age: " +
    	myFriends.get(name));

}
In the example above, the size method of HashMap prints 
out the size of the myFriends instance. As a result, the 
console prints out 3 since there are 3 key-value pairs.
	・・・
Next, we use a for each loop to iterate over each key in 
myFriends. The keySet method of HashMap returns a list of 
keys.
	・・・
Inside the loop, we access the current key name and use 
the get method of HashMap to access the value. The 
console will print out the names and ages of each of my 
friends.
私たちは、HashMapオブジェクト に対しても、それが持つ、
いろいろな情報/プロパティ に、アクセスできます。例えば、
セットになっているデータの総数、キー、値 を、調べることが出来ます。
	・・・
では、まず、myFriendsオブジェクト が、持つ、キーと値のセット の総数を、
調べてみましょう。
HashMap<String, Integer> myFriends
	= new HashMap<String, Integer>();

myFriends.put("Mark", 24);
myFriends.put("Cassandra", 25);
myFriends.put("Zenas", 21);

System.out.println( myFriends.size() );

for (String name: myFriends.keySet()) {

    System.out.println(name + " is age: " +
    	myFriends.get(name));

}
それには、HashMap型オブジェクト myFriends を使って、
size()メソッド を、呼び出して、調べることが出来ます。
このコードでは、その値を、System.out... を、使って、プリントしています。
結果は、3対の、キーと値 のペア がありますから、3 を、コンソール に、
プリントアウトします。
	・・・
次に、
 for-each文
を使って、
 すべてのキーを順番に取り出す
ことをしようとしています。
前回、ArrayListオブジェクトのときは、ペアではなかったので、
for-each文の、(  ) の中の、右側は、ArrayListオブジェクト を、
そのまま書きましたが、
今回は、ペアの内、キー だけを、すべて取り出そうとしているのですから、
HashMapオブジェクトである、myFriends を、右に置くのは、
適当ではありません。
そのためには、HashMapオブジェクト/myFriends から、
 keySet()メソッド
を、呼び出すのです。
そして、keySet()は、キーのリスト を、返します。
そして、その、キーのリスト から、すべての、キー を、取り出すわけです。
つまり、
	for(Stringタイプ nameオブジェクト  in  キーのリスト){
		アクション;
	}
のようなイメージのコードが、必要になるわけですね。
正しいコードで書き直すと、
	for(String name : myFriends.keySet()) {
		// アクション;
	}
となるわけです。
	・・・
今度は、コードブロック / { … } での、アクションを説明します:
System.out.println(); の中の、
( … ) の部分が、ポイントです:
 name - for-each文 によって、返された キー が、代入されています.
 myFriends.get(name) - キー に対する 値(年齢)を、ゲット.
そして、コードブロック が、実行されるたびに、
 誰かの名前 is age: 年齢に当たる数
というイメージの文章を、キー が、なくなるまで、プリントアウトするわけです。Instructions
1.
Complete the unfinished code statement on line 12 to print 
out the size of restaurantMenu.
12行目 の、System.out.println(); を、
restaurantMenuオブジェクト が、持つ、キーと値のペアの数 を、
プリントアウトするように、完成させてください。
これも、同じ仕組みの文が、サンプルコードにあります!

2.
Uncomment the code between line 13 and line 19Next, 
complete the for each loop by typing:
for (String item : restaurantMenu.keySet()) {

}
まず、13行目の、/*
19行目の、*/
を、消してください。これで、この中のコードは、実行できるコードになります。
そして、以下のコードを見て、for-each文 を、完成させてください。
ただ写すのではなく、コードの意味も考えましょう。
for (String item : restaurantMenu.keySet()) {

} 




[Next]
13. Generalizations(このチャプターのまとめ)
●Learn
Great work! What did we learn so far?
Great work!、では、このチャプターのまとめです:

For Loops:
 used to repeatedly run a block of code
For Each Loops:
 a concise version of a for loop
ArrayList:
 stores a list of data
HashMap:
 stores keys and associated values like a dictionary
for文(For Loops):
 コードブロックを、繰り返して実行する必要があるときに使います.
for-each文(For Each Loops):
 配列 や コレクション・フレームワーク で、for文を、簡単に書けます.
ArrayListクラス:
 データのリストを保存します.
HashMapクラス:
 辞書のような感じで、キー(検索する言葉) と 値(定義) を、
 ペアとして保存します.Instructions
1.
Inside of the main method and before the for each loop, 
create an ArrayList called sports that stores String types.
main()メソッドの中 で、また、for-each文 の前のあたりに、
つまり、6行目ぐらいに、String型 の、オブジェクト を、保存する、
sports という名前の、ArrayListオブジェクト を、作ってください。

2.
Add "Football" to sports.
ArrayList型オブジェクト sports に、"Football" を、加えてください。

3.
Now add "Boxing" to sports.
次に、ArrayList型オブジェクト sports に、"Boxing" を、加えてください。

4.
The first for each loop in the code editor is missing the code 
that should be run. Inside of the for each loop, type:
System.out.println(sport);
最初に登場する、for-each文 には、実行コードブロックの中に、
次のコードが、欠けています。タイプして、書き加えてください。
System.out.println(sport);

5.
Uncomment the incomplete for each loop towards the 
bottom and complete the loop by typing:
for ( String city : majorCities.keySet() ) {
}
最後にある for-each文 には、「何を巡回するのか?」 にあたる部分、
つまり、(  ) の中 が、何も書かれていません。
まず、/**/ を、消して、実行コードにしてから、
下のコードを見てタイプし、完成させてください。
for ( String city : majorCities.keySet() ) {
}


[the End of this HTML]