>>900
大雑把にいうと座標に対応した2次元配列リストを用意しておいて登録または座標更新の度に座標に対応した要素のリストに繋いでいく感じ
ShipCollision.CollisionMap(x/?,y/?).add(ShipObject)、BulletCollision.CollisionMap(x/?,y/?).add(BulletObject)みたいな感じ(?は格子のサイズ)
この2つの当たり判定を取るときは、ShipCollision.CollisionMap(i,j)に対してBulletCollision.CollisionMap.CollisionMap(i-1〜i+1,j-1〜j+1)とだけ当たり判定をとればいい

ただ、自分もセレ300Aの時代から弾幕シューティング作ってるけど、こんな処理が必要になったのは敵弾同士の相互干渉やった時ぐらいだよ