アメブロって狭い、カスタマイズ出来ないtwitterと連携出来ない、、、云々かんぬん…
と思ってWordPressでHPを作ってみました。
http://found-jp.sakura.ne.jp/sola/
アメブロは消すことは考えてませんが、今後は技術的なメモは↑に書いていきます。
作ったアプリ(を改造したやつ)が
東北×岐阜=シナジー スマートフォンアプリコンテスト
http://www.tohoku-gifu.com/
の一次審査通りました!拍手っ!
読み間違えてなければ、現時点で上位10作品の中ということになります。
2/19に岐阜のソフトピアジャパンドリーム・コア2Fメッセ
でプレゼンすることになりました。
また結果が出たら書かせてもらうかもしれません。
ちなみにベースとなったアプリはこれ↓です。
写真共有アプリ -MySnap-
https://play.google.com/store/apps/details?id=net.jp.found.mysnap
写真の共有に焦点を絞ったアプリです。
ネットを通しての共有は勿論ですが、スマホを相手に見せることも考慮してます。
まだまだ機能はシンプルですが、良ければ使って見てください。
東北×岐阜=シナジー スマートフォンアプリコンテスト
http://www.tohoku-gifu.com/
の一次審査通りました!拍手っ!
読み間違えてなければ、現時点で上位10作品の中ということになります。
2/19に岐阜のソフトピアジャパンドリーム・コア2Fメッセ
でプレゼンすることになりました。
また結果が出たら書かせてもらうかもしれません。
ちなみにベースとなったアプリはこれ↓です。
写真共有アプリ -MySnap-
https://play.google.com/store/apps/details?id=net.jp.found.mysnap
写真の共有に焦点を絞ったアプリです。
ネットを通しての共有は勿論ですが、スマホを相手に見せることも考慮してます。
まだまだ機能はシンプルですが、良ければ使って見てください。
久しぶりに純粋なJavaネタ
とあるリスト内オブジェクトの特定の値(今回はLong)の重複を検出・排除したかったけど、
Listのcontainsとかのアルゴリズムが不明だったので、シンプルに数通り処理速度のテストをしてみた。
やったのは次の3通り
パターン1:リスト内のオブジェクトをequalsで1つずつ比較
for (int i = 0; i < list.size() - 1; i++) {
for (int j = i + 1; j < list.size();) {
if (list.get(i).getId().equals(list.get(j).getId())) {
list.remove(j);
} else {
++j;
}
}
}
パターン2:ArrayListのcontainsメソッドを利用して比較
List<Long> cList = new ArrayList<Long>();
for (int i = 0; i < list.size() - 1;) {
if (!cList.contains(list.get(i).getId())) {
cList.add(list.get(i).getId());
++i;
} else {
list.remove(i);
}
}
パターン3:HashSetのcontainsメソッドを利用して比較
HashSet<Long> hs = new HashSet<Long>();
for (int i = 0; i < list.size() - 1;) {
if (!hs.contains(list.get(i).getId())) {
hs.add(list.get(i).getId());
++i;
} else {
list.remove(i);
}
}
結果は・・・
■比較対象のリストが1,000件の時
[1回目]
パターン1:14ミリ秒
パターン2:5ミリ秒
パターン3:2ミリ秒
[2回目]
パターン1:21ミリ秒
パターン2:6ミリ秒
パターン3:2ミリ秒
[3回目]
パターン1:22ミリ秒
パターン2:6ミリ秒
パターン3:2ミリ秒
■比較対象のリストが10,000件の時
[1回目]
パターン1:311ミリ秒
パターン2:132ミリ秒
パターン3:15ミリ秒
[2回目]
パターン1:315ミリ秒
パターン2:125ミリ秒
パターン3:13ミリ秒
[3回目]
パターン1:309ミリ秒
パターン2:128ミリ秒
パターン3:13ミリ秒
■比較対象のリストが100,000件の時
→なかなか終わんない
パターン1:54,337ミリ秒
パターン2:46,686ミリ秒
パターン3:92ミリ秒
所感?として100,000回の場合はなかなか終わりませんでしたが、
パターン1の処理件数が階乗となっているので、仕方ないのかなと。
ただ、処理件数が増えてくるとパターン2も処理時間の増加がかなりあるので、
「重複の確認」にはアルゴリズム的には合っていないようです。
結論としては、
今回やった3通りの中では、圧倒的にHashSetがベストという結果に。
とあるリスト内オブジェクトの特定の値(今回はLong)の重複を検出・排除したかったけど、
Listのcontainsとかのアルゴリズムが不明だったので、シンプルに数通り処理速度のテストをしてみた。
やったのは次の3通り
パターン1:リスト内のオブジェクトをequalsで1つずつ比較
for (int i = 0; i < list.size() - 1; i++) {
for (int j = i + 1; j < list.size();) {
if (list.get(i).getId().equals(list.get(j).getId())) {
list.remove(j);
} else {
++j;
}
}
}
パターン2:ArrayListのcontainsメソッドを利用して比較
List<Long> cList = new ArrayList<Long>();
for (int i = 0; i < list.size() - 1;) {
if (!cList.contains(list.get(i).getId())) {
cList.add(list.get(i).getId());
++i;
} else {
list.remove(i);
}
}
パターン3:HashSetのcontainsメソッドを利用して比較
HashSet<Long> hs = new HashSet<Long>();
for (int i = 0; i < list.size() - 1;) {
if (!hs.contains(list.get(i).getId())) {
hs.add(list.get(i).getId());
++i;
} else {
list.remove(i);
}
}
結果は・・・
■比較対象のリストが1,000件の時
[1回目]
パターン1:14ミリ秒
パターン2:5ミリ秒
パターン3:2ミリ秒
[2回目]
パターン1:21ミリ秒
パターン2:6ミリ秒
パターン3:2ミリ秒
[3回目]
パターン1:22ミリ秒
パターン2:6ミリ秒
パターン3:2ミリ秒
■比較対象のリストが10,000件の時
[1回目]
パターン1:311ミリ秒
パターン2:132ミリ秒
パターン3:15ミリ秒
[2回目]
パターン1:315ミリ秒
パターン2:125ミリ秒
パターン3:13ミリ秒
[3回目]
パターン1:309ミリ秒
パターン2:128ミリ秒
パターン3:13ミリ秒
■比較対象のリストが100,000件の時
→なかなか終わんない
パターン1:54,337ミリ秒
パターン2:46,686ミリ秒
パターン3:92ミリ秒
所感?として100,000回の場合はなかなか終わりませんでしたが、
パターン1の処理件数が階乗となっているので、仕方ないのかなと。
ただ、処理件数が増えてくるとパターン2も処理時間の増加がかなりあるので、
「重複の確認」にはアルゴリズム的には合っていないようです。
結論としては、
今回やった3通りの中では、圧倒的にHashSetがベストという結果に。