2013年 5月

もっと Lambda その12

Java

昨日の Java パズラーの超ウルトラヒントを・・・

たぶん、必要ないと思うけど・・・

 

このパズルは古典的なオーバーフローをとりあげてます。

この新しい構文は、

と同じで、i += step のところでオーバーフローをおこします。

 

このループ文は一見すると Math.addExact() メソッドを利用しているので例外が出ると思ってしまいがちですが、

よ~~~く見ると引数の i++ でオーバーフローするので無限ループになってしまいます。

とても古典的で簡単なパズルでした。

これだけだと寂しいので Math.addExact() メソッドを覗いてみました。

なんか良く解らないけどビット演算を駆使して判定しているようですね。

なんで今頃こんなものを・・・以下自粛。(^_^;)

Hatena タグ:

もっと Lambda その11

Java

Java8 でパズルを創ってしまいました。

Java™ Platform, Standard Edition 8 Early Access with Lambda Support b88 で創りました。

簡単なパズルです。

低レベルなものですが、よければあなたの頭脳をもってしてコンパイル、実行してみてください。(^_^)

とても素敵な答えが見つかるでしょう。(^_^;)

解りましたでしょうか?

答えは秘密にしておきますので気になる方は実際にコンパイル、実行させてみてくださいね。

Hatena タグ:

Xperia Tablet Z Wi-Fiモデル SGP312JP

Computer

Xperia Tablet Z Wi-Fiモデル SGP312JP を買った。

DSC00144

保護フィルム、クレードル、カバーなど・・・ 約7諭吉ほどでした。

私は通勤は公共交通機関を使えない田舎なのでマイカー通勤をしている。(バスは一日に6本)

通勤時間を利用した読書やネット閲覧なんてできない。

なのでタブレットまで必要ないと思っていた。

携帯電話でもネットはできるし、買ったとしても使う機会は少ないだろうと判断していた。

だが世の中はデスクトップPCやノートPCよりもタブレットに人気が移ってきているようだ。

そこで新しい物好きの私としては時代の波に乗り損ねていたので無駄遣いを決行することになった。

実はこの SONY のタブレットは2週間くらい前に購入したのだけど体調を崩してしまってあまり使わずにいた。

そもそも何故 SONY Xperia Tablet Z Wi-Fiモデル SGP312JP を購入したかというと、スマホが Xperia だからです。

テザリングの利用が簡単だからという理由です。(^_^;)

それと防水仕様ということもいいですね。

お風呂でテレビやネット、読書などが楽しめます。

また、SONY 製品との連携が GOOD! です。

PS3,nasne など簡単に連携できます。

テレビとブルーレイレコーダーが SONY だともっと便利に使えそうですが私の家のお茶の間には亀山 SHARP 製のテレビとレコーダーが居座ってます。

あとはスクリーンに映し出される映像が素晴らしいです。とても綺麗です!

このペンペラなタブレットからは想像もつかない良い音がでます。

全然期待していなかっただけにさすが SONY だなって思ってしまいます。

処理速度は問題なくサクサク動きます。

この薄くて軽いタブレットにしては電池が長持ちですね。

このタブレットの内部メモリーは 32GB で外部メモリーとしてマイクロSDカードを利用することが可能となってます。

私は 64GB のものを購入しました。

ただ、64GB のメモリーは Amazon の評価では品質か相性かは解りませんが問題が発生する場合があるようです。

私が購入したものは今のところ快適に使えてます。

ハードウェアは素晴らしく問題ないです。

付属しているアプリはそれなりに使いやすくできてます。

Small アプリなんてのがあって初めはこんなの要らないのにって思ってたんですが意外に便利に使えます。

一つだけ気にいらないのは E メールアプリです。

PC のアカウントも使えるんだったらフォルダの自動振り分け機能や SPAM メール対策まではやってほしかった。(詳しく確認してないので間違っていたらご指摘ください。)

OS は Android なのでマーケットから必要な物をインストールすれば良好につかえるようだ。

最後に タブレットからスマホに充電可能な USB ケーブルを紹介します。

Xperia Tablet Zの大容量バッテリーを活かし、Xperia Zなどの対応のXperiaへの給電を可能にするmicroUSBケーブルです。

Tablet Zをモバイルバッテリーとしても活用することができ、非常時のXperiaの電源確保などに大いに役立ちます。

これいいかもと思って購入したんだけど未だ使う機会がありません。

テザリングを使用するとスマホの電池の減りが早いけど車で移動中にシガーライターソケットから給電するだけでスマホは電池切れにならないし、タブレットは電池容量が大きい?からか問題なし。

車での充電環境が無い、もしくは車を使わない人には便利アイテムになるかもしれません。

クレードルはお値段高いけど必需品かもしれないです。

充電端子が小さくて弱そうなので少しお値段がはりますがお勧めです。

クレードルにタブレットをセットするだけで充電されますし、クレードルセット時に自動でアプリを起動することもできるようです。

この薄くて軽いタブレットを持ち歩くのに私はカバーをどうするか悩みました。

純正製品は他のメーカーの倍くらいの価格なので。

結局カバーしたままクレードルに充電可能というものぐさ仕様に惹かれて購入していまいました。

 

スタンド代わりにもなるし見た目の良さもあって機能も損なわずに使えるので満足してます。

液晶保護フィルムは純正品以外でいいものがたくさん出てます。

光沢仕様とかエアーが消えるとか・・・私は純正だと貼りやすくガイドラインシールがついているので純正にしました。

不器用なので上手く晴れませんでしたけど・・・(>_<。)

まだそれほど使ってないけど価格相応の機能は持ち合わせていると思います。

なにより軽くて薄くて電池の持ちが良くて綺麗で音も良くて便利です!

買って良かったと思える製品です。(^_^)

Hatena タグ:

もっと Lambda その10

Java

もっと Lambda シリーズも今回で10回目になりました。

と言っても大した内容ではないので恐縮です。

私のモットーは「門前の小僧習わぬ経を読む」ですから気にせずガンガンいっちゃいます!

今回はストリームオブジェクトの重複要素を排除して新たにストリームオブジェクトを作り直す便利な方法を紹介します。

とても簡単なので覚えておいて損はないと思います。

では、非常にシンプルなプログラムをご覧ください。

 

distinct() メソッドが重複排除して新たなストリームオブジェクトを返してくれるんですねぇ~(^_^)

たったこれだけです!

distinct()

ava.​util.​stream.​Stream

public Stream<T> distinct()

Returns a stream consisting of the distinct elements (according to Object.equals(Object)) of this stream.

This is a stateful intermediate operation.

戻り値:
the new stream

 

実行結果は次のようになります。

HONDA
TOYOTA
NISSAN
MAZUDA

 

便利だね。

調子に乗って二つのリストオブジェクトを結合して重複要素を排除して新たにストリームオブジェクトをつくってみましょう。

 

実行結果は次のようになります。

喜屋武ちあき
櫻井里佳
谷澤恵里香
倉持明日香
戸田恵梨香
新垣結衣
吉高由里子
宮崎あおい
篠田麻里子

ちなみに distinct() メソッド無しだと重複要素は排除されません。

Java8 が正式リリースされて何らかの理由によって Java7 を使わなくてはいけない状況があるとすればそれは気の毒としか言いようがないですね。

Hatena タグ:

もっと Lambda その9

Java

ずっとブログの更新さぼってました。

いろいろネタはあるのですが忙しい毎日を理由の一つとしておきましょう。( ̄。 ̄;)

それと体の調子が良くなくて病に倒れてました。

なんとか復活したので Java8 のエントリーをサクッとポストしようかとがんばってみます。

Java Day Tokyo 2013 が開催されてから日本語での Java8 の情報がちらほら見受けられるようになって嬉しいですね。

ということで、「もっと Lambda」シリーズです。

今回は今まで使ったことが無い flatMap を使ってみます。

実はこの flatMap の使いどころが良く解らずにいたのですが「創る Java」の著者である きしださんのブログにて説明があり、

いくつかのリストを組み合わせて一つのリストを創りたい場合に使えるとのことでした。

JavaDoc を参考までに

flatMap()

java.​util.​stream.​Stream

public Stream flatMap(Function> mapper)

Returns a stream consisting of the results of replacing each element of this stream with the contents of the stream produced by applying the provided mapping function to each element. If the result of the mapping function is null, this is treated as if the result is an empty stream.

This is an intermediate operation.

パラメータ:
mapper – a non-interfering, stateless function to apply to each element which produces a stream of new values

型パラメータ:
R – The element type of the new stream

戻り値:
the new stream

 

早速試してみました。

女性の名前に”さん”をつけるだけのプログラムです。

filter(e -> e.getGender() == Person.Sex.FEMALE) で女性だけ対象として

map(Person::getLastName) で名前でストリームオブジェクトを再構築し、

flatMap(e -> Arrays.asList(e.concat(“さん”)).stream()) で”さん”を付け足して新たにストリームオブジェクトを再構築してできあがり。(^_^)

”さん”を付けるだけのプログラムならこんなことはしなくてもいいけど名前に”さん”を付けたストリームオブジェクトを新たに必要とするときに便利かもしれませんね。

実行結果は期待通りです。

<– Person 表示 –>
柴田 恭平, 61歳, Gender: MALE
壇 蜜, 32歳, Gender: FEMALE
北川 景子, 26歳, Gender: FEMALE
綾瀬 はるか, 28歳, Gender: FEMALE
佐々木 希, 25歳, Gender: FEMALE
剛力 彩芽, 20歳, Gender: FEMALE
小栗 旬, 30歳, Gender: MALE
堀北 真希, 24歳, Gender: FEMALE
武井 咲, 19歳, Gender: FEMALE
市原 隼人, 26歳, Gender: MALE
深田 恭子, 30歳, Gender: FEMALE
蜜さん
景子さん
はるかさん
希さん
彩芽さん
真希さん
咲さん
恭子さん

Java8 のリリースが来年の2月に変更になったようです。

たしか Future Complete が2.3日前の予定だったような・・・

いずれにせよ、早くリリースしてほしいです。

Hatena タグ:

« 古い記事