More Related Content What's hot (19) Xtext&Xtend documents Xtext&Xtend documents
Shintaro Hosoai ?
第56回SEA関西プロセス分科会で用いた言語仕様ドキュメントです.
Xtext, Xtendの言語仕様について解説しています.Xtendは仕様がかなり大きく,すべては扱いきれておりません.詳しくは本家ドキュメントを参照ください.
Xtext:
http://www.eclipse.org/Xtext/documentation.html
Xtend:
https://www.eclipse.org/xtend/documentation.html
R による文書分類入門 R による文書分類入門
Takeshi Arabiki ?
Tokyo.R #31 の発表資料です。
こちらも参考にどうぞ。
R による文書分類入門 & KNB コーパスの文書分類 - あらびき日記
http://d.hatena.ne.jp/a_bicky/20130602/1370179340
プログラマのための文书推荐入门 プログラマのための文书推荐入门
y-uti ?
勤務先の社内勉強会での発表資料です。自然言語処理の基本として TF-IDF ベースの類似文書推薦について説明します。発展的な内容として LDA についても簡単に説明します。Wikipedia の要約データを対象として実際にコードを書いて文書推薦を試みます。
Material Material
_TUNE_ ?
2012/5/19 関数型言語勉強会発表資料( ̄ω ̄*)
最後のページ、「終止」ってなってるのは「終始」の間違いですね、??
Similar to 闯补惫补プログラミング入门【第7回】 (20)
Processingによるプログラミング入門 第4回 Processingによるプログラミング入門 第4回
Ryo Suzuki ?
Processing によるプログラミング入門の第 4 回目。研究室の勉強会で発表しました。
PowerPoint のファイルが欲しい場合は連絡をください。
[←前回] 第 3 回 http://www.slideshare.net/Reputeless/processing-3-23489861
[次回→] 第 5 回 http://www.slideshare.net/Reputeless/processing-5
pi-13. 今までの総まとめ pi-13. 今までの総まとめ
kunihikokaneko1 ?
トピックス:メソッド, クラス, スーパークラス, サブクラス, 継承, クラスの抽象化, Java プログラム例
Java の基本(スライド資料とプログラム例)(全17回)
https://www.kkaneko.jp/pro/pi/index.html
金子邦彦研究室ホームページ
https://www.kkaneko.jp/index.html
pi-7. クラス, メソッド, オブジェクト生成 pi-7. クラス, メソッド, オブジェクト生成
kunihikokaneko1 ?
トピックス:クラス, class, メソッド, コンストラクタ, new, this
Java の基本(スライド資料とプログラム例)(全17回)
https://www.kkaneko.jp/pro/pi/index.html
金子邦彦研究室ホームページ
https://www.kkaneko.jp/index.html
pi-8. クラス設計 pi-8. クラス設計
kunihikokaneko1 ?
トピックス:クラス設計, オブジェクトの状態と状態変化, メソッド内でのみ使用する変数, 抽象化の組み合わせ
Java の基本(スライド資料とプログラム例)(全17回)
https://www.kkaneko.jp/pro/pi/index.html
金子邦彦研究室ホームページ
https://www.kkaneko.jp/index.html
pi-3. 式の抽象化とメソッド pi-3. 式の抽象化とメソッド
kunihikokaneko1 ?
Java の基本(スライド資料とプログラム例)(全17回)
https://www.kkaneko.jp/pro/pi/index.html
金子邦彦研究室ホームページ
https://www.kkaneko.jp/index.html
More from Yukiko Kato (18) 闯补惫补プログラミング入门【第7回】
19. メモリが回収されないプログラム
public class GcTest3 {
static ArrayList<int[]> list = new ArrayList<int[]>();
public static void main(String[] args) {
while(true) {
int[] a = new int[1000];
for (int i = 0; i < a.length; i++) {
a[i] = i;
}
list.add(a);
System.out.println("残メモリ : " +
Runtime.getRuntime().freeMemory());
}
}
}
21. プログラム内で強制的にガーベッジコ
レクションを行う
public class GcTest4 {
public static void main(String[] args) {
for (int n = 0; true; n++) {
int[] a = new int[1000];
for (int i = 0; i < a.length; i++) {
a[i] = i;
}
if (n % 100 == 0) {
System.out.println("gcを呼び出します");
System.gc();
}
System.out.println("残メモリ : " +
Runtime.getRuntime().freeMemory());
}
}
}
24. ClassA.java
public class ClassA {
public static ClassA last = null;
public String name;
public ClassA(String name) {
this.name = name;
last = this;
}
@Override
public String toString() {
return "[" + name + "]";
}
}
25. ClassB.java
public class ClassB extends ClassA {
public ClassA friend;
public ClassB(String name) {
super(name);
}
public ClassB(String name, ClassA friend) {
super(name);
this.friend = friend;
}
@Override
public String toString() {
return "[" + name + ", " + friend + "]";
}
}
26. GcQuiz.java(その1)
public class GcQuiz {
public static ClassA q = new ClassA("ジマイマ");
public ClassA r = new ClassA("レベッカ");
public static void main(String[] args) {
ClassA a = new ClassA("マトン");
ClassA b = new ClassA("トム");
ClassA c = new ClassA("パペット");
ClassB[] arrayA = new ClassB[4];
b = c;
for (int i = 0; i < arrayA.length; i++) {
arrayA[i] = new ClassB("犬" + i);
}
arrayA[3].friend = arrayA[3];
arrayA[0] = arrayA[1];
c = arrayA[2];
arrayA[1] = null;
ClassA d = arrayA[0];
27. GcQuiz.java(その2 続き)
ClassB arrayB[] = new ClassB[4];
arrayB[0] = new ClassB("フロプシー", new ClassA("ネズミ
"));
arrayB[1] = new ClassB("モプシー", new ClassA("アナキン
"));
arrayB[2] = new ClassB("サテンドール", c);
arrayB[3] = new ClassB("ピーター", new ClassA("ベンジャミ
ン"));
}
}
arrayA = null;
arrayB[0].friend = null;
arrayB[1] = null;
arrayB[2] = null;
ClassB e = new ClassB("ルーシー", new ClassA("ティギー"));
e = null;
// ※ここの時点で参照されているインスタンスは何か?
30. 配列の復習
public class ArrayTest {
public static void main(String[] args) {
// 配列の確保
String[] array = new String[3];
// 要素の代入
array[0] = "Alice";
array[1] = "Bob";
array[2] = "Chris";
}
}
// 要素の参照
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
34. ArrayListを使ってみる
import java.util.ArrayList;
public class ArrayListTest1 {
public static void main(String[] args) {
// ArrayListインスタンスの確保
ArrayList<String> list = new ArrayList<String>();
// 要素の追加(addメソッド)
list.add("Alice");
list.add("Bob");
list.add("Chris");
// 要素の参照(getメソッド)
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
41. 配列とArrayListの比較
配列
java.util.ArrayList
確保
array = new 要素の型[要
素数];
list = new ArrayList<要素の型
>();
代入(置き換え)
array[添字] = 要素;
list.set(添字, 要素);
追加
なし
list.add(要素);
参照
array[添字]
list.get(添字);
要素数
array.length
list.size();
添字が範囲外の時 ArrayIndexoutOfBoundsE
xception
IndexOutOfBoundsException
44. イテレータを使ってみる
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorTest {
public static void main(String[] args) {
// ArrayListインスタンスの確保
ArrayList<String> list = new ArrayList<String>();
// 要素の追加(addメソッド)
list.add("Alice");
list.add("Bob");
list.add("Chris");
// イテレータを使ったforループ
for (Iterator<String> it = list.iterator(); it.hasNext();) {
String name = it.next();
System.out.println(name);
}
}
}
45. iteratorメソッド
? for文の中の
Iterator<String> it = list.iterator();
iteratorメソッドを使用して、ArrayListのインスタンスか
らイテレータを得ている。
変数itがiteratorメソッドの戻り値(イテレータ)で初期化さ
れている。イテレータは、「本を読んでいる時の現在の
ページに挟んでいるしおり」と似たような働きをする
? for文の条件式は
it.hasNext();
イテレータに対して「次の要素はあるか?」と尋ねる。戻
り値はboolean。次の要素がある場合は、trueが返却され、
ない場合は、falseが返却される
47. 拡張for文を使ってみる
import java.util.ArrayList;
public class EnhancedForLoopTest {
public static void main(String[] args) {
// ArrayListインスタンスの確保
ArrayList<String> list = new ArrayList<String>();
// 要素の追加(addメソッド)
list.add("Alice");
list.add("Bob");
list.add("Chris");
// 拡張forループ
for (String name : list) {
System.out.println(name);
}
}
}
48. 拡張for文
? 以下の部分が拡張for文
for (String name : list) {
System.out.println(name);
}
? 構文
for (要素の型 変数名: コレクションの式) {
変数を使った処理
}
? 拡張for文を使うことによって、イテレータを得る
iteratorメソッドやイテレータを次の要素があるかどう
かを調べるhasNextメソッドも、nextメソッドも書かず
に済む。
? 配列でも拡張for文を記述することが出来る
50. intをArrayListで管理する
import java.util.ArrayList;
public class IntegerArrayListTest {
public static void main(String[] args) {
// ArrayListのインスタンスの確保
ArrayList<Integer> list = new ArrayList<Integer>();
// 要素の追加
list.add(12);
list.add(34);
list.add(56);
list.add(78);
// 拡張forループ
for (int n : list) {
System.out.println(n);
}
}
}
52. オートボクシング
? プリミティブ型→ラッパークラスへの変換
? ボクシング(boxing conversion)
? ラッパークラス→プリミティブ型への変換
? アンボクシング(unboxing conversion)
? 自動的にボクシング、アンボクシングが行われ
ることを、オートボクシング(autoboxing)、
オートアンボクシング(autounboxing)と言う
? プリミティブ型をラッパークラスで包む様子を
「ボックス(箱)に入れること」に見立てている
55. 削除と確認の例(続く)
public class RemoveContains {
public static void main(String[] args) {
// ArrayListインスタンスの確保
ArrayList<String> list = new ArrayList<String>();
// 要素の追加(addメソッド)
list.add("Alice");
list.add("Bob");
list.add("Chris");
list.add("Diana");
list.add("Elmo");
// 削除の前に要素を表示
System.out.println("削除の前");
for (int i = 0; i < list.size(); i++) {
System.out.println(i + ":" + list.get(i));
}
System.out.println();
63. LinkedListを使った例
import java.util.LinkedList;
public class LinkedListTest {
public static void main(String[] args) {
// LinkedListのインスタンスを確保する
LinkedList<String> list = new LinkedList<String>();
// 要素の追加(addメソッド)
list.add("Bob");
list.add("Chris");
list.add("Diana");
list.add("Elmo");
// 現在の状態
System.out.println(list);
// 先頭にAliceを挿入
list.addFirst("Alice");
// Aliceを挿入した後の状態
System.out.println(list);
}
}
66. LinkedListをキューとして用いた例
(offer,peek,poll)
import java.util.LinkedList;
import java.util.Queue;
public class LinkedListTest2 {
public static void main(String[] args) {
// QueueとしてLinkedListのインスタンスを確保する
Queue<String> queue = new LinkedList<String>();
// 要素の追加
queue.offer("Alice");
System.out.println("offerの後のqueue = " + queue);
queue.offer("Bob");
System.out.println("offerの後のqueue = " + queue);
queue.offer("Chris");
System.out.println("offerの後のqueue = " + queue);
queue.offer("Diana");
System.out.println("offerの後のqueue = " + queue);
// 先頭要素の参照
while (queue.peek() != null) {
// 要素の抽出と削除
String name = queue.poll();
System.out.println("pollの戻り値 = " + name);
System.out.println("pollの後のqueue = " + queue);
}
}
}
67. LinkedListをキューとして用いた例
(add,element,remove) ※続く
import java.util.LinkedList;
import java.util.NoSuchElementException;
import java.util.Queue;
public class LinkedListTest3 {
public static void main(String[] args) {
// QueueとしてLinkedListのインスタンスを確保する
Queue<String> queue = new LinkedList<String>();
// 要素の追加
queue.add("Alice");
System.out.println("addの後のqueue = " + queue);
queue.add("Bob");
System.out.println("addの後のqueue = " + queue);
queue.add("Chris");
System.out.println("addの後のqueue = " + queue);
queue.add("Diana");
System.out.println("addの後のqueue = " + queue);
68. LinkedListをキューとして用いた例
(add,element,remove) ※続き
try {
while (true) {
// 先頭要素の参照
String name = queue.element();
System.out.println("elementの戻り値 = " + name);
// 要素の抽出と削除
name = queue.remove();
System.out.println("removeの戻り値 = " + name);
System.out.println("removeの後のqueue = " +
queue);
}
} catch (NoSuchElementException e) {
e.printStackTrace();
}
}
}
69. LinkedListをスタックとして用いる(続
く)
import java.util.LinkedList;
import java.util.NoSuchElementException;
public class LinkedListTest4 {
public static void main(String[] args) {
// StackとしてLinkedListのインスタンスを確保する
LinkedList<String> stack = new LinkedList<String>();
// 要素の追加
stack.addFirst("Alice");
System.out.println("addの後のqueue = " + stack);
stack.addFirst("Bob");
System.out.println("addの後のqueue = " + stack);
stack.addFirst("Chris");
System.out.println("addの後のqueue = " + stack);
stack.addFirst("Diana");
System.out.println("addの後のqueue = " + stack);
stack.addFirst("Elmo");
System.out.println("addの後のqueue = " + stack);
70. LinkedListをスタックとして用いる(続
き)
try {
while (true) {
// 先頭要素の参照
String name = stack.getFirst();
System.out.println("getFirstの戻り値 = " + name);
// 要素の抽出と削除
name = stack.removeFirst();
System.out.println("removeFirstの戻り値 = " +
name);
System.out.println("removeFirstの後のqueue = " +
stack);
}
} catch (NoSuchElementException e) {
e.printStackTrace();
}
}
}
75. 名前と年齢をMapを使って表現する例
(続く)
// エントリに関する拡張forループ
for (Map.Entry<String, Integer> entry: map.entrySet()) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
System.out.println();
// キーに関する拡張forループ
for (String name : map.keySet()) {
System.out.println(name);
}
System.out.println();
// 値に関する拡張forループ
for (int value : map.values()) {
System.out.println(value);
}
System.out.println();
84. Question.java
import java.util.ArrayList;
public class Question {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Alice");
list.add("Bob");
list.add("Chris");
// ※1
System.out.println(list.get(2)); //※2
System.out.println(list.size()); // ※3
for (String name: list) {
System.out.println(name);
}
}
}