Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Javaで、たまにリストと配列を変換したり、コピーしたりするときがあります。 でも意外とやろうとするたびに忘れてしまうので、ざっとまとめてみました。 (解説を分かりやすくするために、ジェネリクスを使用していません) リスト から 配列(変換) public static String[] convert(List<String> list){ return list.toArray(new String[list.size()]); } toArray の引数は、new String[0]でもかまいませんが、 あらかじめサイズが確定している場合は、そのサイズで配列を作っておいた方がわずかながら効率が良くなります。 Listから配列への無駄のない変換 - 地平線に行く リスト から リスト(コピー) public static List<String> copy(List<String> l
エスケープシーケンスとUnicodeエスケープは似て非なるもの。[2008-08-30] →処理の差異 不変の変数 finalで宣言して初期値を与えた変数は、定数として扱える。[2008-06-22] なお、定数として扱う場合は、変数名は全て大文字にするのが慣例。 public static final int BASE_YEAR = 1970; この変数には後から値を代入することが出来ない。(finalが付いていると、代入できなくなる) 代入できない→値が不変(固定)→定数 →switch文で使う場合の注意 →他言語の定数の定義方法 ただし、オブジェクト(参照型)の場合は、必ずしも固定(不変)というわけではない。 final Map SAMPLE_MAP = new HashMap(); 変数SAMPLE_MAPには新しいMapを代入することは出来ない。しかしSAMPLE_MAP内に値を
前回は、DateFormatクラスがマルチスレッド問題によってバグを引き起こす例を紹介した。マルチスレッドによる問題に対処するには、スレッドごとにインスタンスを作成するか、synchronizedブロックによる同期化を行う。でも「正しい同期化」を行うには十分な知識とコードの把握が不可欠・・・。 そんな時に重宝するのが、Java標準で用意されている同期化オブジェクト。どんなケースにも対応できるわけではないけど、お手軽かつ必要十分な機能を備えている。これを使わない手はない。 関連記事: Javaでスレッドを使う際の注意点SimpleDateFormatのマルチスレッド問題NoClassDefFoundErrorの原因と対応(1)OracleでDate型の時刻が00:00:00になる原因JavaMailの文字化け解決法 スレッドセーフとは? スレッドセーフ(Thread Safe)とは、Java
ちょっと Maven さわってみたので、備忘録として残し置きます。 やったのは、以下のドキュメントに書いてる「プロジェクト作成からビルドまで」ってところです。 Maven – Maven in 5 Minutes 最近ライブラリとかも Maven でやってくれ的なことになってて、今までは「jar で提供してダウンロードさせてくれよ」とか思ってましたが、今回触ってみて案外便利で、どっちかといえば Maven のほうがいいかもと今更ながらに思いました。( 遅い・・・ ) 以下、やったことの手順です。 1. プロジェクトの作成 ドキュメントに記載の通り、以下のコマンド実行してプロジェクトを作成する。 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-
MavenはAntに代わるビルドシステムですが、 Antとは異なった設計思想になっている為 最初に使い始めるまでが大変です。 とりあえず、このページではMavenのインストールから 簡単なサンプルプロジェクトのビルドまでを説明します。 インストール まず、Mavenのサイトからバイナリをダウンロードします。 Mavenのソースはここからはダウンロードできません。 CVS経由で行う必要がありますが、通常のMavenユーザならば その必要も無いはずです。 インストールといっても、適当な場所に解凍するだけです。 ここでは、その場所を $MAVEN_HOME とします。 次に、$MAVEN_HOME/bin にパスを通します。 Linuxならば % export PATH=$PATH:$MAVEN_HOME/bin とします。 MavenはJavaで作成されているので 実行にはJavaが必要です。
環境 OS X 10.9.5 Intellij IDEA 14.1.4 ソースコード 以下の「hello, world」と表示するプログラムを実行可能なjarにします /** * Created by nwtgck on 2015/09/08. */ public class Main { public static void main(String[] args) { System.out.println("hello, world"); } } 手順 1. ツールバーのFile>Project Structureをクリックします 2. Artifactsをクリックし、[+]を押してJAR>From modules with dependencies...をクリックします 3. 以下の画面のMain Class:の右のボタン[...] を押します 4. メインのクラスはMain.java
グーグル先生に聞いても、HttpURLConnectionのタイムアウトについて1.4以前の情報がヒットしまくってうざいのでここにメモ。 簡単にいうとHttpURLConnectionにタイムアウトを設定するのにJDK1.4までは面倒な設定が必要だったけど 1.5では簡単になったというわけ。 JDKのマニュアルを見てもロクにタイムアウトデフォルト値すら書いてないし このメソッドの非標準実装のなかには、指定されたタイムアウトを無視するものもあります。 みたいな(゚Д゚)ハァ?な記述もあるし・・ import java.net.HttpURLConnection; import java.net.URL; public class AnalyzHttpConnection { public static void main(String args[]) { URL url; try { url
Java でシステムの環境変数を取得する方法についてまとめました。 環境変数の取得方法 Java でシステムの環境変数を取得するにはSystem.getenv()メソッドを使用します。 System.getenv (Java Platform SE 8) メソッド 機能 System.getenv() 全ての環境変数をMapで取得。 System.getenv("PATH") 指定された環境変数を取得。 全ての環境変数を取得する場合は次の通りです。 public class GetEnvSample { public static void main(String[] args) { Map env = System.getenv(); System.out.println(env); } } // 結果 {PATH=/usr/local/bin:/usr/bin:/bin:/usr/sb
多くのオブジェクト指向言語では、オブジェクトが解放された時に動く処理を登録できます。そして、その実装には「デストラクタ」と「ファイナライザ」がありますが、決定的に違いがあります。 メモリ解放の仕組み newで確保したものに対して明示的にdeleteを呼ばないといけないC++であれば解放のタイミングは明らかですが、そうでない言語では、プログラマの見えないところでガベージコレクタという、メモリを解放するための仕組みが動いています。そして、このガベージコレクタには、大きく分けて2通りのタイプがあります(掘り下げていけばそれだけで1冊の本になるので、軽く触れる程度にします)。 参照カウント…オブジェクトへの参照の数をカウントしておいて、0になった瞬間に解放する方法 マークアンドスイープ…ときどきどの変数が有効かをチェックして、参照できなくなっているものを解放する方法 この2つのシステムどちらを取る
多分、javaやってる人には常識なんだろうけど、 C++から来た人は、始め「デストラクタ無いの?」ってなると思う。 似たようなのはあるみたい。 Javaの場合「GCがあるからデストラクタは不要」っていう空気があるらしい。 そんなわけで、デストラクタを実装する事は出来ないんだけど、 代わりにファイナライザっていうものがある。 ファイナライザは、GCがオブジェクトを回収する際に呼んでくれるメソッド。 GCはオブジェクトを回収する直前に、 Object#finalize() を呼び出してくれる。 なので、使用したい場合はコレをオーバーライドしてあげる。 1インスタンスにつき1回は呼ばれるけど、 デストラクタと違って、呼ばれるタイミングはオブジェクト破棄時ではなく、 あくまでGCがオブジェクトを回収するタイミングになる。 ファイナライザ public class derived extends b
public class Pair<K, V> extends AbstractMap.SimpleEntry<K, V> { /** serialVersionUID. */ private static final long serialVersionUID = 6411527075103472113L; public Pair(final K key, final V value) { super(key, value); } } テストコード Pair (AbstractMap.SimpleEntry) ImmutablePair (AbstractMap.SimpleImmutableEntry) javafx.util.Pair JavaFX 2.0 以降のライブラリに含まれている Pair の実装です。上記の SimpleEntry とほぼ同じ使い方が可能です。ただし値を入れ
Javaのジェネリクスについて調べていると、以下のような記事を目にしました。 以下引用です。(http://qiita.com/pebblip/items/1206f866980f2ff91e77) コンパイル時に型情報は消去される パラメータ化された型や、型パラメータの持つ型情報はコンパイラによって消去される。これは型消去(type erasure)と呼ばれる。 例えば、以下の型変数Tを持つジェネリック型を考える。 ContainerはIntegerやBigDecimalなどのNumber型のみの値を保持するコンテナクラス。 class Container<T extends Number> { private T value; public Container(T value) { this.value = value; } public T get() { return value;
Java用のシンプルかつ高機能なJSONエンコーダー/デコーダーライブラリであるJSONICの使い方です。 JSONの基本 JSON とは JavaScript Object Notation の略で、構文は JavaScript におけるオブジェクトの表記法をベースとした軽量なデータ記述言語の1つです。JSONは"KEY":"VALUE"の形式で記述します。KEY として使うデータ型は文字列に限りますので、ダブルクオーテーションで囲む必要があります。シングルクォートは使えません。 JSON オブジェクト JSON オブジェクトは、波括弧の中に記述します。オブジェクトには、複数のKEY:VALUEのペアを含めることができます。これは連想配列と等価であり、Ruby ではハッシュ、Java では Map などと呼ばれています。 {"id":1, "name":"tasukujp"} JSONの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く