Document

JavaSeminarString
発表者:エン リリ
2006年10月16日
事前準備
• 各自にJavaのフォルダの下で「String」という
フォルダを作成すること。
• 時間の関係で、授業中やらなかった演習問
題の回答は以下に示したフォルダの中に保
存しておいた。各自に自分のフォルダまで保
存すること。
– cp ~babypooh/Java/String/* .
文字列の比較-1
• 文字列の比較は2種類ある。
– 一つは文字列のアドレスの比較
例:a==b
– もう一つは文字列の内容の比較
例:a.equals(b)
• 新しいオブジェクトを生成する(コンストラクタ)
コマンド:new
文字列の比較-2
• アドレスが同じの場合
– System.out.println(s1 + "==" + s2 + " : "
+(s1 == s2));
//文字列アドレスを比較する。s1
とs2がそれぞれ同じ文字列を指している(文字列の置か
れているアドレスが等しい)時に真になる。
• 文字列が同じの場合
– System.out.println(s1+"=="+s2+" : "
+s1.equals(s2)); //文字列の内容を比較する。s1と
s2がそれぞれ同じ文字列内容であるとき(アドレスは同じ
でも違っていてもいい)真になる。
文字列の走査
• 時間の関係で、飛ばす。
• 回答は私のフォルダの中に保存してある。
バイト配列-1
• xの配列全体のサイズの調べ方
– x.length
– ()括弧はない
• 配列xのi番目のサイズの調べ方
– x[i].length
• String sからbyteの配列b[]へ。
– byte b[]=s.getBytes();
• byteの配列から文字列へ。
– String s=new String(b);
– 新しい文字列を生成するので、newが必要。
バイト配列-2
• 整数(int a)から文字列へ
– String s = new String(a);
– もしくは、String s =“”+ a;
– もしくは、ss = String.valueOf(a); ssは
String型なのに注意すること。(補足)
• 文字列から整数へ
– int a = Integer.parseInt(s);
多次元配列
• JavaはCと違って、変則的な配列も許されて
いる。
• 多重のforループを構成することで、行列の
全て要素を取り出して表示することができる。
• x.lengthとx[0].lengthの違いに注意せよ。
• 演習6を実行せよ。
Collection-List-その1
• 配列は定義するときに決めた大きさを後から
変動できない問題に対して、Javaでは次のク
ラスを用意されている。
– List 可変長の配列。要素の動的な追加や削除
ができる。
– Set 集合。Listと同様に要素の追加や削除が可
能。
– Map 写像。KeyとValueの組を要素として追加
や検索。HashMap, TreeMap
Collection-List-その2
• Listは通常の配列と同じようにインデックスに
よって値を管理する。
• ArrayListクラスの基本的な使い方:
– List <型> 変数名 = new ArrayList <型>
();
– 「型」はリストの要素になるオブジェクトの型を指
定しており、Generic(な宣言)と呼ばれている。
– J2SE 5.0以前ではコンパイルできないので、
注意。
Collection-List-その3
• Listへの基本操作は次の通り。
– 追加
– 削除
– 置換
add(オブジェクト)
remove(オブジェクト)
set(インデックスi、オブジェクト)
• i番目の要素を置き換える
– 要素数
size()
Collection-List-その4
• リストの要素の表示し方:
– 要素のインデックスを一つずつ指定(10-12行目)
• for(int i = 0; i < al.size(); ++i)
System.out.println(al.get(i));
– ArrayListオブジェクトをそのまま印刷(13行)
• System.out.println(al);
– Listの各要素について印刷(17-19行目)
• for(String a : al)
System.out.println(a);
• for(型 変数名 : オブジェクト){繰り返し処理}
Collection-Set
• Setは値だけによって挿入や検索を行う。た
だし、集合内に同じ要素が複数個あることは
ない。
• Setの要素の操作はListクラスと共通で、
add(),clear(),remove(),size()などがあ
る。
Collection-Map-その1
• Mapは値の識別にキーを使い、(キー、値)の
組の挿入や検索を実現する。
– Mapの実現には、ハッシングや二分木が使われ
ていて、それぞれ、 HashMapやTreeMapに相
当する。
Collection-Map-その2
• Mapの基本操作
– 初期化
• Map<キー、値> 変数名=new HashMap<キー、
値>();
– 挿入
• 変数名.put(検索キー、新規の値);
– 検索
• 出力値=変数名.get(検索キー);
Collection-Map-その3
• 登録されたキーの一覧を求めるには:
– keySet()
– Values()
す
キーの一覧からなるSetを返す
値の一覧からなるCollectionを返
• その他のメソッドやクラス:
– Sort()
リストの要素をソートするColletion
s型の静的メソッド
– Arrays
クラスは配列を操作する便利なクラ
ス
宿題
• 宿題8
• Stringフォルダの中にEnglish.javaというファイル
を自分のフォルダにコピーし、以下のように仕様を
追加せよ。
– コマンドプロンプトから直したい単語のIndexを入力して
から次に正しい単語を入力するようにせよ。
– キーボードからの入力の処理をループしに、ループから
抜ける処理は私の場合は、Enterキーだけ打った場合に
抜けるようにしてあるが、皆さんは各自に自由に変更して
もよい。