shokosブログ

プログラミング

サーブレット計画その1.1

今日はサーブレットのお勉強!!

初耳なのでまずはぐぐってみました

サーブレットを使うと、javaでHTMLが書けるらしい!

その一連の動作はまたeclipseでできるようです


ただtomcatをプラグインする必要があるみたい

まずはDLからですね


余談ですがtomcatって聞くとトムキャットレッドビートルを連想してしまいます

ソートアルゴリズム計画その1.1

クイックソートバブルソートを書いてみました。
なかなか大変でした


クイックソート

public List<Integer> muchSort(List<Integer> list) {
	List<Integer> sortList = new ArrayList();
	sortList = list;
	int size = sortList.size();
	if (size == 1 || size == 0) {
		return sortList;
	} else {
		List<Integer> left = new ArrayList<Integer>();
		List<Integer> right = new ArrayList<Integer>();
		Integer center = sortList.get(size / 2);
		for (int i = 0; i <= size - 1; i++) {
			if (i != (size / 2)) {
				if (sortList.get(i) <= center) {
					left.add(sortList.get(i));
				} else {
					right.add(sortList.get(i));
				}
			}
		}
		List<Integer> result = new ArrayList<Integer>();
		result.addAll(muchSort(left));
		result.add(center);
		result.addAll(muchSort(right));
		return result;
	}

}

result.addAll(muchSort(left));
result.add(center);
result.addAll(muchSort(right));

の部分は再帰っていうらしいです

自分で生成できたらよかったのだけど
ここの部分はぐぐって参考にしましたorz

でも理解はできました!(時間かかったけど


今後がんがん使って行きたいとおもいます

ソートアルゴリズム計画その1.2

クイックソートテストの部分

@Test
public void 引数に与えた要素が複数の配列をクイックソートする() throws Exception {
	List<Integer> list = new ArrayList<Integer>();
	list.add(8);		
	list.add(4);
	list.add(2);
	list.add(9);
	list.add(3);
	list.add(1);
	QuickSort quick = new QuickSort();
	List<Integer> resultList = quick.muchSort(list);
	List<Integer> exceptedList = new ArrayList<Integer>();
	exceptedList.add(1);
	exceptedList.add(2);
	exceptedList.add(3);
	exceptedList.add(4);
	exceptedList.add(8);
	exceptedList.add(9);
	for(int i=0;i<=exceptedList.size()-1;i++) {
		System.out.println(resultList.get(i));
		assertThat(resultList.get(i), is(exceptedList.get(i)));
	}
}

ソートアルゴリズム計画その1.3

バブルソート

public List<Integer> sort(List<Integer> list) {
	List<Integer> sortList = new ArrayList<Integer>();
	sortList.addAll(list);
	for (int size = sortList.size(); size > 1; size--) {
		for (int i = 0; i < size - 1; i++) {
			if (sortList.get(i) > sortList.get(i + 1)) {
				int tmp = sortList.get(i);
				sortList.set(i, sortList.get(i + 1));
				sortList.set(i + 1, tmp);
			}
		}
	}
	return sortList;
}

ソートアルゴリズム計画その1.4

バブルソートテストの部分

@Test
public void 引数に与えた配列の要素数が複数のバブルソート() throws Exception {
	BubbleSort bubble = new BubbleSort();
	List<Integer> sourceData = new ArrayList<Integer>();
	sourceData.add(5);
	sourceData.add(3);
	sourceData.add(10);
	sourceData.add(1);
	List<Integer> exceptedList = new ArrayList<Integer>();
	exceptedList.add(1);
	exceptedList.add(3);
	exceptedList.add(5);
	exceptedList.add(10);
	List<Integer> resultList = bubble.sort(sourceData);
	assertThat(exceptedList.size(), is(resultList.size()));
	for (int i = 0; i <= exceptedList.size()-1; i++) {
		System.out.println(resultList.get(i));
		assertThat(exceptedList.get(i), is(resultList.get(i)));
	}
	
}

ソートアルゴリズム計画その1.5

クイックソートバブルソートも並び替えるって動作は同じなので


並び替えるインタフェースを作ってみることにしました


だがしかし、この2つはプロジェクトもパッケージ名も違うのでちょっと苦労しそうです。


とりあえずパッケージ名を統一しようとリネームしたら文字化けしました

ちょこっとjavaマメちしき

文字化けを直すために、文字コードをutf8に設定しました


Preferencesを開く→General→Workspaceをクリック
Text file encoding をutf8にする

そうすると新規でファイルを立ち上げたときに文字コードが全部utf8になります!

でも今までのファイルの日本語部分が全部文字化けしてしまったので、直すだけの簡単なお仕事をします

java英語辞典

どんどん足していく予定です

implement  実装する

inherit   継承する

abstract   抽象的な

exception  例外

Unhandled  扱われていない

iterate 繰り返す

disabled 無効にされる

test   テスト

recipient   受取人

ソートアルゴリズム計画その1.7

QuickSortクラスでSortableインタフェースのsortメソッドを実装

import java.util.ArrayList;
import java.util.List;



public class QuickSort implements Sortable {

	List<Integer> quickList = new ArrayList();


	public List<Integer> sort(List<Integer> list) {
		List<Integer> sortList = new ArrayList();
		sortList = list;
		int size = sortList.size();
		if (size == 1 || size == 0) {
			return sortList;
		} else {
			List<Integer> left = new ArrayList<Integer>();
			List<Integer> right = new ArrayList<Integer>();
			Integer center = sortList.get(size / 2);
			for (int i = 0; i <= size - 1; i++) {
				if (i != (size / 2)) {
					if (sortList.get(i) <= center) {
						left.add(sortList.get(i));
					} else {
						right.add(sortList.get(i));
					}
				}
			}

			List<Integer> result = new ArrayList<Integer>();
			result.addAll(sort(left));
			result.add(center);
			result.addAll(sort(right));
			return result;
		}

	}





}

ここで超つまづきました
Sortableインターフェースの○○メソッドを実装してくださいってエラーメッセージがでていました

??

○○メソッドなんてSortableで作ってないぞ??

って思い悩んでいたらアドバイスいただきました

ソースの上のほうを見ると、

import org.junit.runner.manipulation.Sortable;

ってインポート宣言が勝手にされていました

わたしが実装したかったのは自分のパッケージのSortableインタフェースのメソッドであって、
org.junit.runner.manipulation.Sortableではない!!

なのでこのインポート宣言を消したら解決しました

うーん、パッケージって大切

ソートアルゴリズム計画その1.8

BbubbleSortクラスでSortableインタフェースのsortメソッドを実装


import java.util.*;

public class BubbleSort implements Sortable{
	public List<Integer> sort(List<Integer> list) {
		List<Integer> sortList = new ArrayList<Integer>();
		sortList.addAll(list);
		for (int size = sortList.size(); size > 1; size--) {
			for (int i = 0; i < size - 1; i++) {
				if (sortList.get(i) > sortList.get(i + 1)) {
					int tmp = sortList.get(i);
					sortList.set(i, sortList.get(i + 1));
					sortList.set(i + 1, tmp);
				}
			}
		}
		return sortList;
	}
}

ソートアルゴリズム計画その1.9

テストの部分

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class QuickAndBubble {
	@Test
	public void 引数に与えた配列をクイックソートまたはバブルソートする() throws Exception {
		List<Integer> list = new ArrayList<Integer>();
		list.add(3);
		list.add(4);
		list.add(2);
		list.add(5);
		list.add(1);
		Sortable bubblesort = new BubbleSort();
		List<Integer> bubble = bubblesort.sort(list);
		List<Integer> except = new ArrayList<Integer>();
		except.add(1);
		except.add(2);
		except.add(3);
		except.add(4);
		except.add(5);
		for (int i = 0; i <= except.size() - 1; i++) {
			System.out.println(bubble.get(i));
			assertThat(bubble.get(i), is(except.get(i)));
		}
		Sortable quicksort = new QuickSort();
		List<Integer> quick = quicksort.sort(list);
		for (int i = 0; i <= except.size() - 1; i++) {
			System.out.println(quick.get(i));
			assertThat(quick.get(i), is(except.get(i)));
		}

	}

}