タグ

javaに関するyukisaltoのブックマーク (55)

  • あなたのJavaコードをスッキリさせる、地味に便利な新API 10選(後編) - Taste of Tech Topics

    こんにちは。 アキバです。 日3/18、ついに、Java8が正式リリースされますね! もうダウンロードされましたか?ってまだですかね?私はまだです(だって公開前にエントリ書いてるんだもんね) 2014/03/19追記:Oracleのページが更新されました!→こちら さて、前回に続いて、Java8で追加された地味で便利なAPIを紹介していきます。 今回は、みんな大好きMapとConcurrent、あとちょびっとComparatorです。 3. Map操作編 (1) Map#getOrDefault() これまでは、Mapから値を取得してnullだったらデフォルト値を使用する、みたいなコードを以下のように書いていたと思います。 Map<String, String> map; // 何らかのMap String value = map.get("key"); if (value == nul

    あなたのJavaコードをスッキリさせる、地味に便利な新API 10選(後編) - Taste of Tech Topics
  • Java 8 Stream API にテキストを流してみた(終端操作編) - Qiita

    Java 8 Stream API にテキストを流してみる(生成編)- Qiita Java 8 Stream API にテキストを流してみた(終端操作編)- Qiita Java 8 Stream API にテキストを流してみて(中間操作編)- Qiita 要するにだ Java 8 Stream は実行前も実行後もデータを保持しない。 Streamクラス自体はコレクションではなく、流れてくる個々の要素に対する操作のパイプラインを構成しているだけだ。従って Stream を通して加工された要素をデータとして扱うためには、最終的にまた何らかのデータ構造なり値なりに戻されなければならない。 そのためのメソッド群を「終端操作(Terminal operation)」と呼び、そのほかの「中間操作(Intermediate operation)」と区別する。 中間操作メソッドは要素に適用する関数をパ

    Java 8 Stream API にテキストを流してみた(終端操作編) - Qiita
  • Java Collection の操作方法の引き出しを増やそう① - Qiita

    Java でプログラムを書いていると,標準の java.util.Collection フレームワークを使うことが必須になるでしょうが,なるべくスマートに書こうよ,という趣旨. 第1弾として「初期化」と「変更不可能」について.それ以外は思い立ったら書きます. Java 1.8, それと Guava, Apache Commons utils が使えるという状況を前提とします. 初期化 ナントカの一つ覚えのように Lists.newArrayList() ばかり呼ばないこと. 標準のコンストラクタ 標準のコンストラクタ.ダイアモンド演算子を書かなければいけない (1.6 以前なら総称型の省略も不可能),初期化のパターンとしてやや乏しいので,余り使わない. List<String> lines = new ArrayList<>(); List<String> another = new Ar

    Java Collection の操作方法の引き出しを増やそう① - Qiita
  • JavaでMySQLに接続してデータ操作をする - TASK NOTES

    JavaMySQLを操作する基的な部分について書きました。 JDBCドライバの取得 JavaからMySQLへ接続するにはJDBCドライバが必要です。 MySQL :: Download Connector/J からダウンロードして下さい。ダウンロードしたら解凍して、中のjarファイルを使用します。 $ tar zxvf mysql-connector-java-5.1.35.tar.gz $ ls mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar Maven リポジトリは以下の通り。 <dependency> <groupId>mysql</groupId> <artifactId>

    JavaでMySQLに接続してデータ操作をする - TASK NOTES
  • Javadoc ドキュメンテーションコメントの書き方 - Qiita

    出展: プログラム内のコメントの書き方 | 天才まくまくノート はじめに(モチベーション) こんな話があります。あるソフトウェア企業が一人の技術者の採用を決めました。その決め手となった理由は、「公開しているオープンソースソフトウェアのドキュメントが素晴らしかったから」です。彼らは、作成されたドキュメントを見ただけで、その人には技術力がある、一緒に働いて欲しいと判断したのです。 ある国の言語を学ぶために読み書きの練習が必要であるのと同様に、コーディング技術をつけるには、多くの良質なコードを読み、多くのコードを書くことが必要です。設計ドキュメントを書くのも同じことです。日頃から分かりやすいドキュメントを書く鍛錬を怠らず、長年の経験を積んでいかなければ、良質なドキュメントを書く力は身に付きません。今日からドキュメンテーションコメントをバリバリ書いて、ドキュメンテーション力を付けていきましょう。

    Javadoc ドキュメンテーションコメントの書き方 - Qiita
  • Java Generics 導入の裏側 - kmizuの日記

    このエントリは、これまで自分がさんざんTwitterで書いてきたことですし、Martin Odersky教授へのインタビュー www.artima.com でおおむね語られていることでもあります。ただ、この辺の事情についてあまり詳しくない方も居るようなので、上記インタビューの引用を交えて、JavaにGenericsが入るに至った経緯や関連して活躍した人物についても書いてみようと思います。 事の始まりは1995年にJavaが発表されたことでした。これに触発された、Philip Wadler先生(世界的に有名なコンピュータ科学者)、Martin Odersky先生と同じ研究室に居た助手さん?がこれでなんかやってみないかと煽ったらしく、翌年の1996年には、JavaにGenericsや高階関数、ADTなど関数型プログラミング言語の機能を入れ込んだPizza言語をMartin Odersky先生が

    Java Generics 導入の裏側 - kmizuの日記
  • Java SE 8のラムダ式はどう実現されたのか?──実装の経緯、内部的な仕組みを理解する - builder by ZDNet Japan

    Java SE 8で導入されたラムダ式は、どのような仕組みで実現されているのだろうか? ラムダ式をより深く理解したいと考える読者にとって、これは気になるテーマの1つだろう。その秘密をお教えしよう。 Java SE 8で導入されたラムダ式は、Javaの言語仕様の歴史において最大級の変更だとされている。ただし、これはあくまでもJava言語の文法レベルの話であり、Javaプログラムを実行するJava仮想マシン(JVM)に新たな仕組みが導入されたわけではない。つまり、言語仕様に関する旧バージョンとの相違はコンパイラとランタイムが吸収し、バイトコードレベルでの互換性は保たれているということだ。 それでは、このような大きな変更を、既存のJVMの仕組みの中でどのように実現したのだろうか。それを知ることは、ラムダ式をより深く理解する手助けとなるかもしれない。Java SE 8のラムダ式実現の経緯と仕組みに

  • サービス提供終了のお知らせ

    日頃より、アレスネットをご愛顧いただきまして誠にありがとうございます。 「ホームページサービス」のサービス提供は2016年1月31日をもちまして終了させていただきました。 これまで長らくご利用いただき、誠にありがとうございました。 今後も、皆様によりよいサービスをご提供させていただけるよう、サービス品質向上に努めて参りますので、何卒、ご理解いただけますようお願 い申し上げます。 <アレスネットをご契約のお客様へ> 後継サービスとして「userwebサービス」を提供させていただいております。 詳しくは、以下のリンクをご参照ください。 ▼「userwebサービス」のご案内 http://www.ejworks.info/userhp/alles/index.html 今後ともアレスネットをご愛顧いただけますようお願い申し上げます。 株式会社イージェーワークス アレスネット カスタマーサポート

  • 昨日までJavaJavaしてた人がいきなりExcelのVBAを実装する羽目になったときのためのメモ - Qiita

    Excel は滅びぬ! Excel の力こそ日企業の夢だからだ! VBA 実装してて学んだこととかのメモ。 JavaJava してたかはあまり関係ないかも。 エディタの使い方 エディタを表示する Alt + F11 で VB エディタを表示できる。 環境設定 背景色・フォントを調整する デフォルトの白背景とか気が狂うので、暗い色にする。 「ツール」→「オプション」を選択し、「エディターの設定」タブを開く。 「コードの表示色」を選択して、「背景」の色を選択する。 ついでにフォントも見やすいやつに変更する。 これだけで開発効率が5割増しになる。 イミディエイトウィンドウ イミディエイトウィンドウを表示する いわゆるコンソールに当たるのが、イミディエイトウィンドウと呼ばれるウィンドウ。 Ctrl + G で表示される。 イミディエイトウィンドウに出力する ↓イミディエイトウィンドウに実行するプ

    昨日までJavaJavaしてた人がいきなりExcelのVBAを実装する羽目になったときのためのメモ - Qiita
  • パフォーマンスを悪くするには - Qiita

    パフォーマンスを悪くするには? パフォーマンスの悪いプログラムにするためにはどうすればいいのかを書きました 基的にJavaをターゲットにしています ソースコードを汚くするには に元々記載していたパフォーマンスに関わる部分をここに移動させました オブジェクトの生成 常にコンストラクタ呼び出しでインスタンスを生成する 同じインスタンスを使い回せばいい状況もあるので、常に生成する必要は無い 大量のデータを格納することが確定する状況下で、List等のCollectionを初期サイズの指定無しにそのインスタンスを生成する 適切ではないAPIの使用 new Integer などの非効率なコンストラクタを使用する enumをkeyにしてHashMapを生成する(EnumMapの方が実行効率がいい) 同期不要箇所で、VectorやHashTable等の古いCollectionを使用する マルチスレッド

    パフォーマンスを悪くするには - Qiita
  • ソースコードを汚くするには - Qiita

    ソースコードを汚くするには? 汚いプログラム(ものによってはバグを引き起こすプログラム)にするためにはどうすればいいのかを書きました 情報集約のため以下ページに内容を移動させました Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    ソースコードを汚くするには - Qiita
  • HibernateのLazy initializeエラーでビューを表示できない - PukiWiki

    2008/03/07からのアクセス回数 22994 HibernateのLazy initializeエラーでビューを表示できない † Cart問題の最後で、注文者の情報をいれた後に内容を表示するときに以下のようなエラーが発生しました。 こんな最後の最後に勘弁してくださいと気持ちでした! -- 例外のトレース org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: example.cart.domain.Order.lineItemList, no session

  • 難解なSerializableという仕様について俺が知っていること、というか俺の理解 - 都元ダイスケ IT-PRESS

    java.io.Serializable …、ある程度Javaに触れて来た人は必ず見たことがあるインターフェイスだと思う。私も何度も見てきたし、必要に迫られて自分の作ったクラスにSerializableをつけたこともある。しかし、こいつは一体何なのか? 継承の便利さ 僕らがまだJava初心者だった頃。継承というメカニズムに助けられながら育って来た。簡単に言えば、HttpServletクラスを継承しさえすれば、自分の作ったクラスがサーブレットとして認識されるのだ。また、abstractメソッドなどという便利な機能もあり、継承にあたって実装しなければいけないメソッドは確実に指示され、言われた通りにそのメソッドを実装すれば良い。 StrutsのActionも然り。そう、多くの場合は「継承さえすれば、望む物がだいたい出来上がる」というのがJavaの世界だと思っていた。 だが、世の中そんなに甘くない

    難解なSerializableという仕様について俺が知っていること、というか俺の理解 - 都元ダイスケ IT-PRESS
  • 弱い参照とな - Qiita

    package references; public class Sheryl { public void sing(){ System.out.println("生き残りたい"); } } package references; import java.lang.ref.*; public class Main { public static void main(String[] args) { Sheryl strongRef = new Sheryl();//① WeakReference<Sheryl> weakRef = new WeakReference<Sheryl>(strongRef);//② strongRef = null;//③ Sheryl sheryl = weakRef.get(); if (sheryl != null){ System.out.printl

    弱い参照とな - Qiita
  • デザインパターンを読み解く

    ポリモーフィズム(サブクラスによる切り替え、抽象化) ここに分類されるのは、オブジェクト指向の第3原則、ポリモーフィズムを使用したパターンです。ポリモーフィズムを使用すると、動的に使用するクラスを切り替えることができます。<参照> 他に分類されているものでも、ポリモーフィズムが重要な位置を占めているものもありますが、ここではそれしか使われていないものを扱います。 ただデザインパターン全体を通して強調されているのは、インターフェースでプログラミングするということです。実装への依存をなくし、そうすることによって設計の骨組みを明らかにするのです。 Template 次のようなメソッドがあった場合に、処理Bのところを条件によって変えたい場合があるとします。 class Hogehoge { void doit() { ... 処理A ... ... 処理B ... ... 処理C ... } }

  • JavaのOptionalのモナド的な使い方 - Qiita

    NullPointerException 嫌いですよね!そんなときに頼りになるのが Java 8 から導入された Optional です。 でも、 null の代わりに Optional を積極的に使うとコードが Optional だらけになり、特に次のような場合に面倒くさいです。 Optional<Integer> a があるとき、 a の値を二乗したい。ただし、 a が empty の場合は empty を得たい。 Optional<Double> a があるとき、 a の平方根を計算したい。ただし、 a が empty または負の数の場合は empty を得たい。なお、 Math.sqrt を安全にした(負の数を渡すと empty を返す)関数 Optional<Double> safeSqrt(double) があるものとして考えて良い。 Optional<Integer> a と

    JavaのOptionalのモナド的な使い方 - Qiita
  • ガーベジ・コレクション:GC ( Garbage Collection ) についての簡単な説明と調査方法

    Java の GC について簡単に説明いたします。 GC はヒープやヒープサイズと密接な関連があります。以下のページも合わせて参照ください。 「Java のヒープサイズ」についての簡単な説明 Java プログラムが動作するとオブジェクトはメモリ上にロードされます。 大きなオブジェクトを使用したり、また、使用するオブジェクトの数が多ければ、その分メモリの使用領域は増加します。 そのまま、新しいオブジェクトをロードし続けると、Java が使用できるメモリ領域がメモリが一杯になります。 * 「 Java が使用できるメモリ領域 」、これをヒープ領域と言います。( ヒープ領域以外にも Permanent 領域が存在します。) メモリが一杯になると新しいオブジェクトをロードできず、プログラムを実行することができなくなります。 このような状態を回避するための仕組みが ガーベジ・コレクショ

  • [Java]java.io.SerializableのSerializable(直列化可能)とは何なのか? : THINK PINK

    AppFuseで生成されたクラスたちの中でも、Modelにあたるクラスは、大体が「implements Serializable」している。 改めて「うーん」と考えた(いや考えてない、調べて理解するのに頭を使っただけ)、java.io.Serializableインタフェースってなんだ? 先ずはリファレンスを参照してみた。 クラスの直列化可能性は、java.io.Serializable インタフェースを実装したクラスによって有効になります。このインタフェースを実装していないクラスでは、その状態が直列化または直列化復元されることはありません。直列化可能クラスのサブタイプは、すべてそれ自体が直列化可能です。直列化インタフェースにはメソッドやフィールドはなく、直列化可能であることを識別するためだけに機能します。 Serializable (Java 2 Platform SE 5.0)より引用

    [Java]java.io.SerializableのSerializable(直列化可能)とは何なのか? : THINK PINK
  • Javaの例外処理について - 水まんじゅう2

    これはJavaアドベントカレンダーの5日目です。 最近例外処理について考えなければいけないことがあったので、こうしたほうが良いよというのをまとめます。 他の言語からJavaに移ってきた場合に微妙なところで変な感じになることがあるので。 ここで扱うJavaの例外というのはThrowableとそのサブクラスのことです。 Javaにはtry〜catch〜finallyという例外を扱うための構文があります。 try { } catch(Throwable t) { } finally { } Java7からはtry-with-resourcesや例外のマルチキャッチという新しい構文も増えました。 そちらについて詳しく知りたい人は[twitter:@skrb]さんの現場で使える[最新]Java SE 7/8 速攻入門をご参照お願いします。 現場で使える[最新]Java SE 7/8 速攻入門 作者:

    Javaの例外処理について - 水まんじゅう2
  • 【Java】public static void main(String[] args)とは何か - TASK NOTES

    Javaを勉強し始めた時にまず最初に目にするpublic static void main(String[] args)という一文ですが、何となく決まり事なんだという程度で書いていたと思います。 Javaに慣れてきた段階であらためて考えると、色々見えてくることもありますので少しだけ内容を追ってみます。 Javaの入門書などでまず最初に実行するのが以下のような HelloWorld! を出力するプログラムですね。 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 実行すると以下のようになります。 $ javac HelloWorld.java $ java HelloWorld Hello World! なぜ HelloWorld

    【Java】public static void main(String[] args)とは何か - TASK NOTES