[Java]配列をソートする

Javaには、配列をソートするメソッドが java.util.Arrays クラスの中に用意されている。

例:
import java.util.Arrays;
// (略)

int[] arr1 = {8, 4, 3, 1, 6, 2, 5, 0, 9, 7};
// 配列全体をソート
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1));
// -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

int[] arr2 = {8, 4, 3, 1, 6, 2, 5, 0, 9, 7};
// インデックスが3から6までの要素をソート
Arrays.sort(arr2, 3, 7);
System.out.println(Arrays.toString(arr2));
// -> [8, 4, 3, 1, 2, 5, 6, 0, 9, 7]

このメソッドは、 Dual-Pivot Quicksort と呼ばれる、計算量 O(n log(n)) のアルゴリズムを提供する。

[Ruby]配列を展開して関数の引数に使う

たくさんの引数を取る関数に対して、呼び出し前に配列を使って引数を用意し、呼び出し時には配列を展開して引数を渡すことができる。その際は、配列の直前にアスタリスク(*)を付ければよい。
特に、引数の数が不定の場合などに役立つ。

例:
# 配列の入った変数に対して
a = [1, 2, 3]
sprintf('%d %d %d', *a)
# => "1 2 3"

# 配列リテラルに対して直接使うこともできる
sprintf('%d %d %d', *[1, 2, 3])
# => "1 2 3"

逆に、不定個の引数を取る関数を定義したい場合には、仮引数にアスタリスクを付ける。

例:
def hoge(*a)
  p a
end
hoge(1, 2, 3, 4)
# [1, 2, 3, 4]
この場合、渡された複数の引数が入った配列がaに入る。

[Objective-C]配列内のオブジェクトのキー値から配列を作成する

NSDictionaryが入った配列があるとき、それぞれのオブジェクトのキー値を集めた配列を取得するには、NSArrayのvalueForKey:メソッドを使う。
 配列内の各オブジェクトに対してvalueForKey:を実行して、その結果を配列として返すものである。
NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"ABC", @"theKey", nil];
NSDictionary *dict2 = [NSDictionary dictionaryWithObjectsAndKeys:@"DEF", @"theKey", nil];
NSArray *anArray = [NSArray arrayWithObjects:dict1, dict2, nil];
NSLog(@"%@", [anArray valueForKey:@"theKey"]);
この例では、ABCとDEFが入った配列が返る。

応用例
特定のキーの値を持つオブジェクトを配列の中から探す。
 [[anArray valueForKey:@"theKey"] indexOfObject:@"theValue"]; 

この例では、キー"theKey"の値がtheValueである辞書が配列内で最初に現れる位置を返す。

[jQuery]jQueryのバージョンを確認する

ブラウザで開いているページがjQueryを使っているか確認する歳に、下記のコードをブラウザの開発者ツールのコンソールで実行すると、jQueryのバージョンを確認できる。

$().jquery

ページがjQueryを読み込んでいれば、ブックマークレットを作成する際にいきなり「$」が使えるので便利である。

[Ruby]文字列内で正規表現に一致するパターンを全て抽出する

HTMLファイルに出現する特定のタグをすべて抜き出したいときなど、文字列内で繰り返し出現するパターンを正規表現を用いてすべて抽出するには、 String#scan を使う。一致したパターンが全て入った配列が取得できる。

例:
>> '1<img src="1.jpg"><br>2<img src="2.jpg">'.scan(/<img.*?>/)
=> ["<img src=\"1.jpg\">", "<img src=\"2.jpg\">"]