前回までのあらすじ
プログラミングド素人のデザイナーがJava入門してみた_その8
Mathクラス,Randomクラス
Mathクラス
Math.ceil()
Math.floor()
Math.round()
Math.PI
Math.random()
切り上げ
切り捨て
四捨五入
円周率
乱数(Randomクラスの方がよい)
double d = 123.456 ;
System . out . println ( Math . ceil ( d )); //小数点以下を切り上げ
System . out . println ( Math . floor ( d )); //小数点以下を切り捨て
System . out . println ( Math . round ( d )); //四捨五入
System . out . println ( Math . PI ); //円周率
Randomクラス
Randomクラスはjavaのutilパッケージ内にあるため、使うにはインポートする必要がある
Randomクラスのインスタンスを作らないと使えないメソッド (クラスメソッドではない?)
r.nextDouble()
r.nextInt(n)
r.nextBoolean()
0 ~ 1未満の浮動小数点数
0 ~ n未満の整数
true
or false
import java.util.Random ; //Randomクラスをimport
~ 中略 ~
Random r = new Random (); //インスタンス化
System . out . println ( r . nextDouble ()); //0 ~ 1未満の浮動小数点数
System . out . println ( r . nextInt ( 100 )); //0 ~ 100(引数の値)未満の整数
System . out . println ( r . nextBoolean ()); //true or false
ArrayListクラスを使う
配列のようなものだが、あとから要素を追加,削除することができる
使うにはjavaのutilパッケージからのインポートが必要
ArrayListはジェネリクス(引数の値を指定して使う)を使った型
Listインターフェースを実装したクラス
ArrayListだけが持つメソッドを使う機会はあまりないので、ArrayListが実装しているListインターフェースで宣言することもある
al.add(n)
al.set(x,y)
al.remove(n)
al.seze()
ArrayListの要素にnを追加する
x番目の項目にyを追加する
n番目の項目削除する
要素の数を取得
import java.util.* ; //utilパッケージ内のクラスを全てインポート
// ArrayList<Integer> sales = new AllayList<>();
// 今回はListクラスで宣言
List < Integer > sales = new ArrayList <>();
sales . add ( 10 );
sales . add ( 20 );
sales . add ( 30 );
sales . set ( 0 , 100 );
sales . remove ( 1 );
// for(int i = 0; i < sales.size(); i++){
// System.out.println(sales.get(i));
// }
for ( Integer sale : sales ){
System . out . println ( sale );
}
ArrayListクラスと同様にListクラスを実装したLinkedList クラスがある
できることは同様だが、下記のような違いがある
ArrayListクラス
LinkedListクラス
《検索速度》:速い、《要素の追加/削除》:遅い
《検索速度》:遅い、《要素の追加/削除》:速い
HashSetクラス
ArrayListクラス同様に複数のデータを扱う
値の重複を許さない(同じ値を追加しても無効)
値の順番を保持しない
javaのutilパッケージからインポートして使う
Setインターフェースを実装している
ジェネリクス
Setインターフェースで宣言することが多い
import java.util.* ; //utilパッケージからインポート
~ 中略 ~
Set < Integer > sales = new HashSet <>();
sales . add ( 10 );
sales . add ( 20 );
sales . add ( 30 );
sales . add ( 30 ); //30は重複した値なので無効
for ( Integer sale : sales ){
System . out . println ( sale ); //順不同で出力(ランダムというわけではなさそう)
}
同じくSetインターフェースを実装したものに、TreeSet ,LinkedHashSet がある
|HashSet|TreeSet|LinkedHashSet|
|:---:|:---:|:---:|
|値が順不定|値順にソート|追加順を保持|
HashMap
連想配列
keyとvalueで値を管理
utilパッケージからインポート
値の順番を保持しない
javaのutilパッケージからインポートして使う
Mapインターフェースを実装している
ジェネリクス
Mapインターフェースで宣言することが多い
m.put(key,value)
m.remove(key)
m.size()
keyとvalueが対になった要素を追加
keyで指定した要素を削除
要素数を取得
import java.util.* ;
~ 中略 ~
//インスタンス化
Map < String , Integer > sales = new HashMap <>(); //ジェネリクス。keyとvalueの型を指定
sales . put ( "suzuki" , 100 ); //要素を追加
sales . put ( "satou" , 50 );
sales . put ( "tanaka" , 70 );
System . out . println ( sales . get ( "tanaka" )); //keyで値を呼ぶ
System . out . println ( sales . size ()); //要素数
//要素を全て取り出す
for ( Map . Entry < String , Integer > sale : sales . entrySet ()){ //saleにkeyとvalueを格納するループ?
System . out . println ( sale . getKey () + ":" + sale . getValue ()); //saleに格納されたkeyとvalueを表示
}
Mapインターフェースを実装したTreeMap ,LinkedHashMap がある
HashMap
TreeMap
LinkedHashMap
順不定
key順
追加された順
教科書
ドットインストール さまさま
配列はあとから要素の追加、削除できないの!?
クラスではなくインターフェースで変数を宣言することもできるのか
配列っぽく扱うListクラスやSetクラスがジェネリクスを使っていて、なるほど、と思った
そろそろ序盤にやったことが頭から抜けてきている...
HashSetクラスが要素に序列をつけていないのはあえてなのだろうか...
Author And Source
この問題について(プログラミングド素人のデザイナーがJava入門してみた_その9), 我々は、より多くの情報をここで見つけました
https://qiita.com/iwashi0830/items/7aa5a0487d97b4a06eba
著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .