JSゆるふわめも

がっこうでべんきょうしたことをめもがきしてます

Arrays.asListが返すリストの挙動

   List<String> words = new ArrayList(Arrays.asList(longWords,longWords2,"test","test1","test2"));
   words.removeIf(w -> w.length() <= 12);

上記のような処理を書くとUnsupportedExceptionで怒られしまう
原因はArrays.asListが返すリストのサイズは変更できないから
ArrayListのコンストラクタで通常?のArrayListに変換することでこの問題は回避できる。


namihira.hatenablog.com

CuncurrentHashMap.reduceEntriesメモ

reduceEntries
public Map.Entry reduceEntries(long parallelismThreshold,
                                    BiFunction,Map.Entry,? extends Map.Entry> reducer)
指定されたリデューサを使用して値を結合することにより、すべてのエントリの累積結果を返します。結果がない場合はnullを返します。
パラメータ:
parallelismThreshold - このオペレーションを並列的に実行するために必要な(推定の)要素数
reducer - 交換可能性と結合性を持つ結合関数
戻り値:
すべてのエントリを累積した結果
導入されたバージョン:
1.8

自分は小学生並みの脳みそしか有していないので、これを見てもぱっと見よく話からない。 一つ一つ見ていく

戻り値はMap.Entry<K,V>

long parallelismThreshold 平行操作を実行する閾値、つまりここで指定したEntry以上の要素が存在すれば並列実行される

BiFunction<Map.Entry<K,V>,Map.Entry<K,V>,? extends Map.Entry<K,V>>

脳が崩壊しそうだ…

? extends Map.Entry<K,V> reducer(Map.Entry<K,V> entry,Map.Entry<K,V> entry) 上記のような形式のラムダ式を呼ぶことができる。

何となく分かった。で、最大値を検索?するサンプル

    ConcurrentHashMap<String, Integer> randomMap = new ConcurrentHashMap<String, Integer>();
    //10000個ランダムな値を生成
    new Random().ints(10000).forEach(value->randomMap.put(String.valueOf(value) , value));
    //
    Map.Entry<String, Integer> max = randomMap.reduceEntries(1, (e1,e2) -> e1.getValue() > e2.getValue() ? e1 : e2);
    System.out.println(max);

タイムゾーンについて

タイムゾーンとは

イギリスのグリニッジ(経度0°:本初子午線)から経度15°毎に区切り、それぞれの区間に対して時間を割り当てたものを指す。

日本は経度135°が国土に含まれ、その地点をタイムゾーンの計測地点としている(日本標準時子午線)

それをUTC+9 (9 * 15 = 135°)と表現しており、グリニッジ標準時刻から9時間進んでいることを示している。

タイムゾーンは物理学的な時間ではなく、人間が利便性のために便宜上作成している時間であるため、これに慣習・政治的要素も加わる。

その主な例がサマータイム

Magsafe2(Mac Pro)の代替品

正月に実家に帰省した際、Macbook Proの充電器を自宅に忘れてきてしまい大変困った。

 

純正品の充電器を購入すると9,000円近い出費になってしまう。

結局下記の組み合わせで3000円ちょっとの出費に抑えることができた。

 

この組み合わせで2、3度充電したが特に問題なく使用することができた。

 

Hyperjuice 改造不要 Macbook Magsafe2 充電ケーブル 20cm

Hyperjuice 改造不要 Macbook Magsafe2 充電ケーブル 20cm

 

 

 

ELECOM 巻取式ACアダプタ TOSHIBA用 15V ACDC-TB1565BKMB

ELECOM 巻取式ACアダプタ TOSHIBA用 15V ACDC-TB1565BKMB

 

 

 

DCプラグアダプター9種(5.5/2.1mmジャック 対 9種のプラグ)

DCプラグアダプター9種(5.5/2.1mmジャック 対 9種のプラグ)

 

 

 

HDMI分配器を購入

購入したのはこれ

www.amazon.co.jp

 

MacとBD用に使用しているけど、今のところ概ね快適

ただ、スピーカーの線は未だに抜き差しする必要があるのが難点

 

HDMIに加えてスピーカーの線も分配する機器もあるのかな

AWTの勉強1

awtでウィンドウはFrameというオブジェクトで表現される。

このFrameをカスタマイズすることでアプリケーションを作成する。

つまりFrameを拡張継承していく。

 public CustomeFrame extends Frame {

素のFrameはマウスで押しても何も起きない。

なぜならマウスで押したということがわからない状態だから。

ユーザーのなんらかのアクションを受け取るためには、リスナーと呼ばれる

ユーザーのアクションを受け取ることができるオブジェクトを利用する必要が有る。

普通(?)のオブジェクトは外からのアクションを受け取ることができないので、

リスナーを経由して外のアクションを受け取る。

よくadd〜listener()みたいなメソッドでリスナーの参照を得る。

public CustomeFrame extends Frame implements ActionListener {

 //ユーザーがCustomeFrameに及ぼしたなんらかのアクションがActionEventととして通知される。
 public void actionPerformed(ActionEvent ae) {
     ....
    }
} 

リスナーはセンサーで、そのセンサーを壁にくっつけてなんらかのアクションを

感知しているイメージ

センサーは色々あるし、最初からセンサーで感知したあとの動作が決まっているものもある。