◆PROCESSING 逆引きリファレンス
カテゴリー:プログラミング
【解説】
PROCESSINGはJavaをベースにした言語ですので、配列変数を扱うのに便利な ArrayList 型が利用可能です。
ArrayListについては「配列変数を利用するには(ArrayList編)」を参照してください。
ArrayListを使えば、今から説明する StringListと似たような事が実現可能です。しかし文字列だけを扱いたいなら、 ArrayList<String>よりもStringListを使う事が推奨されています。
【構文】
●宣言:
StringList 変数名;
●確保:
変数名 = new StringList();
【主なメソッド】
●値がいくつあるか知る(戻り値:int)
size();
●値を全て消去する(戻り値:void)
clear() ;
● 指定した位置の値を取得する(戻り値:String)
get( index );
●指定した位置の値を置き換える(戻り値:void)
set( index, String );
●指定した位置の値を削除する(戻り値:String)
remove( index );
●最後尾に値を追加する(戻り値:void)
append( String );
append( StringList );
append( String[] );
●リストに指定した文字列があるか調べる(戻り値:boolean)
hasValue( String );
●リストの文字列を昇順に並び替える(戻り値:void)
sort();
●リストの文字列を降順に並び替える(戻り値:void)
sortReverse();
●リストのすべてを小文字にする(戻り値:void)
lower();
●リストのすべてを大文字にする(戻り値:void)
upper() ;
●すべての値をコピーして新たな配列を作る(戻り値:String[])
array() ;
【注意】
●値がいくつあるか知る場合
size();は、StringListに値がいくつ格納されているかを取得します。1個しか値が格納されていない場合は1が戻ります。エリアを確保していない StringListの個数は取得できません。
●値を全て消去する場合
clear();で、該当StringListに格納されている値を全て廃棄し、0個にします。エリアを確保していない StringListは消去できません。
●指定した位置の値を取得する場合
get( index ); でindex番目に格納されている値を読み出します。indexは0から始まる値で、StringListに格納済みのString数-1ま でしか指定できません。たとえば1つだけしか値を格納していないStringListに対し、get( 1 ); と指定するとエラーになります。getに成功すると、指定位置のStringが戻されますが、これはStringListに格納されているindex番目 の値を複写したものになります。元のStringList内から値が無くなってしまうわけではありません。
●指定した位置の値を置き換える場合
set(index, String); で指定したindex番目の値を Stringに置き換えます。indexは0から始まる値で、StringListに格納済みのString数-1までしか指定できません。たとえば1つだけしか値を格納していないStringListに対し、set( 1, String); と指定するとエラーになります。ArrayListとは異なり、置き換える前の値は戻りませんので注意が必要です。
●指定した位置の値を削除する場合
remove( index ); でindex番目に格納されている値を削除し、後続の値を自動で前詰めしてくれます。indexは0から始まる値で、StringListに格納済みのString数-1までしか指定できません。たとえば1つだけしか値を格納していないStringListに対し、remove( 1 ); と指定するとエラーになります。
●最後尾に値を追加する場合
append( String); でStringListの一番後ろに値( String)を追加します。追加するのは単純な文字列(String)の他にも、StringListそのものや、String配列を追加する事が可能です。ArrayListとは異なり、StringListの途中(任意の位置)に文字を追加する事はできません。
●リストに指定した文字列があるか調べる場合
hasValue(String)で、StringListの中にStringが存在するか調べることが可能です。存在する場合は true が、存在しない場合は false が戻されます。StringListに格納されている文字列の大文字小文字は区別されます。
●リストの文字列を昇順に並び替える場合
sort()で、StringListに格納されている文字列を並び替える事が可能です。並び順はUTF16文字コードの昇順になるようです。つまり、大雑把にいうと
数字<半角大文字アルファベット<半角小文字アルファベット<全角ひらがら<全角カタカナ<漢字<半角カタカナ
の順で並べられます。
sort()によりStringListそのものの中身が書き換えられる事に注意してください。元のStringListの並びを保持したい場合は、あらかじめarray()命令を使い、StringListを複写しておく必要があります。
●リストの文字列を降順に並び替える場合
sortReverse()は、上記sort()とは逆順(降順)で並べる命令です。sort()と同じく、sortReverse()によりStringListそのものの中身が書き換えられる事に注意してください。
●リストのすべてを小文字にする場合
lower()はStringListに格納されているアルファベット文字列を全て小文字に置き換えます。アルファベットは全角文字も対象となります。アルファベット以外の文字列は影響を受けません。
lower()によりStringListそのものの中身が書き換えられる事に注意してください。元のStringListを保持しておきたい場合は、あらかじめarray()命令を使い、StringListを複写しておく必要があります。
●リストのすべてを大文字にする場合
upper()は上記lower()の逆で、StringListに格納されているアルファベット文字列を全て大文字に置き換えます。アルファベットは全角文字も対象となります。アルファベット以外の文字列は影響を受けません。
●すべての値をコピーして新たな配列を作る場合
array()は、StringListの各値を新たなString配列に複写して取り出します。取り出されるのはStringListではなくString配列です。
【関連記事】
●配列変数を利用するには(基礎編)
●配列変数を利用するには(応用編)
●配列変数を利用するには(ArrayList編)
●値がいくつあるか知る例:
1 2 3 4 5 6 7 8 9 10 11 |
StringList sl; //宣言 //println( sl.size() ); これはエラー sl = new StringList(); //確保 println( sl.size() ); //値は0個 sl.append("もも"); //1つ目を追加 sl.append("なし"); //2つ目を追加 //値の格納個数を表示 println( sl.size() ); |
フルーツの名前が2つ格納されているStringListがあります。このStringListに値がいくつ格納されているか知るにはsize()を用います。
<出力サンプル>
●値を全て消去する例:
1 2 3 4 5 6 7 8 9 10 |
StringList sl; //宣言 sl = new StringList(); //確保 sl.append( "かき" ); //1つ目を追加 sl.append( "なし" ); //2つ目を追加 sl.append( "もも" ); //3つ目を追加 println( sl ); //slの中身を表示する sl.clear(); //slの中身を消去する println( sl ); //slの中身を表示する |
いくつかの値が格納されている StringListの中身を全て消去します。結果、StringListは空っぽ(0個の項目)になります。
<出力サンプル>
●指定した位置の値を取得する例:
1 2 3 4 5 6 7 8 9 |
StringList sl; //宣言 sl = new StringList(); //確保 sl.append( "かき" ); //1つ目を追加 sl.append( "なし" ); //2つ目を追加 sl.append( "もも" ); //3つ目を追加 println( sl.get(2) ); //3つ目を取得して表示 println( sl ); //StringListの状態表示 |
フルーツの名前が3つ格納されているStringListから、最後の項目(もも)を取得して表示しています。get()は値のコピーを取得するので、元のStringListは変化しない事に注目してください。
●指定した位置の値を置き換える例:
1 2 3 4 5 6 7 8 9 |
StringList sl; //宣言 sl = new StringList(); //確保 sl.append( "かき" ); //1つ目を追加 sl.append( "さば" ); //2つ目を追加 sl.append( "もも" ); //3つ目を追加 sl.set( 1, "りんご" ); //"さば"を置き換える println( sl ); //StringListの中身を表示する |
フルーツの名前を3つ追加する予定が、2番目に魚の名前(さば)を追加してしまったとしましょう・・・(笑)。set()で、2番目に追加した値を ”りんご” に置き換えています。”りんご” に置き換える前の文字(さば)は失われてしまいます。
●指定した位置の値を削除する例:
1 2 3 4 5 6 7 8 9 10 11 |
StringList sl; //宣言 sl = new StringList(); //確保 String s; sl.append( "かき" ); //1つ目を追加 sl.append( "なし" ); //2つ目を追加 sl.append( "もも" ); //3つ目を追加 s = sl.remove( 1 ); //"なし"を削除する println( s ); //削除した値を表示する println( sl ); //StringListの中身を表示する |
フルーツの名前が3つ格納されているStringListから、真ん中の “なし” を削除します。remove()の戻り値には、削除された値(なし)が戻ります。
<出力サンプル>
●最後尾に値を追加する例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
StringList sl1, sl2; //宣言 String[] sa = {"PC","HDD"}; sl1 = new StringList(); //確保 sl2 = new StringList(); //確保 sl1.append( "かき" ); //1つ目を追加 sl1.append( "なし" ); //2つ目を追加 sl2.append( "さくら" ); //1つ目を追加 sl1.append(sl2); //StringListを追加する sl1.append(sa); //String配列を追加する println( sl1 ); //StringListの中身を表示する |
sl1にはフルーツの名前を2つ、sl2には植物の名前を1つ追加しています。またパソコンに関係する道具名を格納したString型の配列 sa を用意します。
この状態から、sl1に、sl2とsaを追加します。StringListにはStringListやString配列が追加出来ることが理解頂けると思います。append()は必ず最後尾に追加します。また元の値(sl2やsa)は変化しません。
●リストに指定した文字列があるか調べる例:
1 2 3 4 5 6 7 8 9 10 11 12 |
StringList sl; //宣言 sl = new StringList(); //確保 sl.append( "SSD" ); //1つ目を追加 sl.append( "PC" ); //2つ目を追加 sl.append( "HDD" ); //3つ目を追加 if( sl.hasValue("Hdd") == true ){ println( "Hddがあります" ); } else { println( "Hddはありません" ); } |
パソコンに関係する道具名を3つ格納したStringListに、”Hdd” という値が存在するか調べています。
hasValue()は調べる際に大文字小文字を区別します。上記の場合、全て大文字のHDDは存在しますが、Hddは存在しないので「Hddはありません」と表示されます。
<出力サンプル>
●リストの文字列を昇順に並び替える例:
1 2 3 4 5 6 7 8 9 10 11 |
StringList sl; //宣言 sl = new StringList(); //確保 sl.append( "岩手県" ); //1つ目を追加 sl.append( "3458" ); //2つ目を追加 sl.append( "HDD" ); //3つ目を追加 sl.append( "サトウ");//4つ目を追加 println( sl ); //並び替える前を表示 sl.sort(); println( sl ); //並び替えた後を表示 |
漢字、数字、アルファベット、カタカナの文字列が格納されたStringListを並び替えています。sort()によりStringListそのものの中身が書き換えられている事に注意してください。
<出力サンプル>
●リストの文字列を降順に並び替える例:
1 2 3 4 5 6 7 8 9 10 11 |
StringList sl; //宣言 sl = new StringList(); //確保 sl.append( "岩手県" ); //1つ目を追加 sl.append( "3458" ); //2つ目を追加 sl.append( "HDD" ); //3つ目を追加 sl.append( "サトウ"); //4つ目を追加 println( sl ); //並び替える前を表示 sl.sortReverse(); println( sl ); //並び替えた後を表示 |
漢字、数字、アルファベット、カタカナの文字列が格納されたStringListを並び替えています。sortReverse()によりStringListそのものの中身が書き換えられている事に注意してください。
<出力サンプル>
●リストのすべてを小文字にする例:
1 2 3 4 5 6 7 8 9 10 11 |
StringList sl; //宣言 sl = new StringList(); //確保 sl.append( "AbC" ); //1つ目を追加(全角も置き換わる) sl.append( "pC" ); //2つ目を追加 sl.append( "HdD" ); //3つ目を追加 sl.append( "Append"); //4つ目を追加 println( sl ); //操作前を表示 sl.lower(); println( sl ); //操作後を表示 |
いくつかのアルファベットの単語が格納されたStringListに対し、lower()によりアルファベットを小文字に置き換えています。全角のアルファベットも対象となります。lower()によりStringListそのものの中身が書き換えられている事に注意してください。
<出力サンプル>
●リストのすべてを大文字にする例:
1 2 3 4 5 6 7 8 9 10 11 |
StringList sl; //宣言 sl = new StringList(); //確保 sl.append( "AbC" ); //1つ目を追加(全角も置き換わる) sl.append( "pC" ); //2つ目を追加 sl.append( "HdD" ); //3つ目を追加 sl.append( "Append"); //4つ目を追加 println( sl ); //操作前を表示 sl.upper(); println( sl ); //操作後を表示 |
いくつかのアルファベットの単語が格納されたStringListに対し、upper()によりアルファベットを大文字に置き換えています。全角のアルファベットも対象となります。upper()によりStringListそのものの中身が書き換えられている事に注意してください。
<出力サンプル>
●すべての値をコピーして新たな配列を作る例:
1 2 3 4 5 6 7 8 9 10 |
StringList sl; //宣言 String[] sa; sl = new StringList(); //確保 sl.append( "さくら" ); //1つ目を追加 sl.append( "菊" ); //2つ目を追加 sa = sl.array(); println( sl ); //元のStringList println( sa ); //複写したString配列 |
植物の名前を2つ格納したStringListを、array()命令でString配列に複写しています。取り出されるのはStringListではなくStringの配列です。
<出力サンプル>
本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。