派遣切り

今朝 会社の前でチラシを配ってる人たちがいて
何のチラシかと覗き見してみれば、小さな文字がびっしり敷きつめられて、ヘッドラインとばかりの大きな文字で派遣切りと書いてあるのが見えた。因みにボクの手元には回って来なかったので詳しくはわからない。


豚インフルエンザの過剰報道で忘れかけてたけど、「そう言えば解決してなかったねその問題」とか思いながら会社のゲートの中に入る。
するとそこには見慣れない箱があって、そこには大きな文字で「チラシ捨て」と書いてある。

僅か5m程度の距離で読み切れるモノでもないそのチラシは無造作に丸められて捨てられて、山のような形になっていた。


インフルエンザには、関心大で、派遣切りには
無関心っていうか、他人事って言うか、なんかフォーカス当てる部分がずれはじめてる気がするねぇ〜。日本人が大好きなアメリカの個人主義の都合のいい部分だけ抜き取った。そんな感じがしなくもない。
正社員でのほほんと生きてるボクが偉そうに言えることでもないのは百も承知だけどね。


それにしても、外で配ってる人からは微妙に見えない場所だけど、ゲートに近い場所、つまり捨てるには最適な場所に置いてあるあたりが、策略を感じる。あそこに置いた人に少し興味が湧く。


そう言えば、昨日のjavaの話。
冷静に考えれば当然だと就業時間開始五分で気付いた。

ArrayList<ArrayList<String>> arys = new ArrayList<ArrayList<String>> ();
ArrayList<String> ary = new ArrayList();

ary.add("rec1");
ary.add("Mike");
ary.add("12");
arys.add(ary);

ary.add("rec2");
ary.add("Tom");
ary.add("13");
arys.add(ary);

ary.add("rec1");
ary.add("Mike");
ary.add("17");
arys.add(ary);

arysにaddしまくってるから最終的に9個あって正解.
途中でclearしなきゃね.

	public static void separate (ArrayList<ArrayList <String>> arys,int level) {
		for (int i = 0; i < arys.size();i++) {
			for (int j = 0; j < (arys.get(i)).size();j++){
				System.out.print(" " + arys.get(i).get(j));
			}
			System.out.println();
		}
	}
		
	public static void init(ArrayList <ArrayList<String>> arys){
		ArrayList <String> ary = new ArrayList <String> ();
		ary.add("rec1");
		ary.add("Apple");
		ary.add("A");
		ary.add("120");
		arys.add(ary);
		ary.clear();
		
		System.out.println("Check1 = " +  arys.size() + "|" +  arys.get(0).size());
		
		ary.add("rec2");
		ary.add("Orange");
		ary.add("B");
		ary.add("100");
		arys.add(ary);
		ary.clear();

		
		ary.add("rec3");
		ary.add("Grape");
		ary.add("A");
		ary.add("80");
		arys.add(ary);
		ary.clear();
		
		ary.add("rec4");
		ary.add("Orange");
		ary.add("A");
		ary.add("100");
		arys.add(ary);
		ary.clear();
		
		ary.add("rec5");
		ary.add("Apple");
		ary.add("C");
		ary.add("150");
		arys.add(ary);

	}
}


実行結果

Check1 = 1|0
Check = 5|4
rec5 Apple C 150
rec5 Apple C 150
rec5 Apple C 150
rec5 Apple C 150
rec5 Apple C 150


何か違うでしょ...
っていうかarysの中にいてるaryは全て参照渡しなんだ...へー勉強になるなる....って時間ねーんだよ.


	public static void separate (ArrayList<ArrayList <String>> arys,int level) {
		
		System.out.println("Check = " +  arys.size() + "|" +  arys.get(4).size());
		
		for (int i = 0; i < arys.size();i++) {
			for (int j = 0; j < (arys.get(i)).size();j++){
				System.out.print(" " + arys.get(i).get(j));
			}
			System.out.println();
		}
		
	}
	
	

	
	
	
	public static void init(ArrayList <ArrayList<String>> arys){
		ArrayList <String> ary = new ArrayList <String> ();
		ary.add("rec1");
		ary.add("Apple");
		ary.add("A");
		ary.add("120");
		arys.add((ArrayList<String>)(ary.clone()));
		ary.clear();
		System.out.println("Check1 = " +  arys.size() + "|" +  arys.get(0).size());
		
		ary.add("rec2");
		ary.add("Orange");
		ary.add("B");
		ary.add("100");
		arys.add((ArrayList<String>)(ary.clone()));
		ary.clear();
		System.out.println("Check2 = " +  arys.size() + "|" +  arys.get(0).size());
		
		ary.add("rec3");
		ary.add("Grape");
		ary.add("A");
		ary.add("80");
		arys.add((ArrayList<String>)(ary.clone()));
		ary.clear();
		
		ary.add("rec4");
		ary.add("Orange");
		ary.add("A");
		ary.add("100");
		arys.add((ArrayList<String>)(ary.clone()));
		ary.clear();
		
		ary.add("rec5");
		ary.add("Apple");
		ary.add("C");
		ary.add("150");
		arys.add((ArrayList<String>)(ary.clone()));
		ary.clear();
	}
}

実行結果

Check1 = 1|4
Check2 = 2|4
Check = 5|4
rec1 Apple A 120
rec2 Orange B 100
rec3 Grape A 80
rec4 Orange A 100
rec5 Apple C 150

まぁ,良いんだけどEclipseで警告が出てるんだよなぁ〜...
何が問題なんだろう...って思いながら
だまって@SuppressWarnings("unchecked")を付けるあたり,オイラも悪い癖がついたものだ


結局最終的に以下のようなソースに落ち着いた.
肝心のソートの部分は結局,疑似文字列を作って解く事に....
納期が明日だから仕方ないよ...

public class Main {

	/**
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		ArrayList <ArrayList<String>> arys = new ArrayList <ArrayList<String>>();
		ArrayList <ArrayList<String>> arys2 = new ArrayList <ArrayList<String>>();
		init(arys);
		/* arysの最終行に擬似文字列を追加する */
		makePseudo(arys);
		arys2 = sort(arys);
		System.out.println("=================");
		show(arys2);
		System.out.println("=================");
	}

	
	/**
	 * ソート条件を連結して擬似文字列を作る
	 * 
	 * @param arys
	 */
	public static void makePseudo (ArrayList<ArrayList <String>> arys) {
		for (int i = 0; i < arys.size();i++) {
			String dummy = "";
			for (int j = 1; j < (arys.get(i)).size();j++)
				dummy = dummy + arys.get(i).get(j) + "|";
			arys.get(i).add(dummy);
		}
	}


	
	public static void show (ArrayList<ArrayList<String>> arys) {
		System.out.println("size = " + arys.size() + "size2 = " + (arys.get(0)).size());
		for (int i = 0; i < arys.size();i++) {
			for (int j = 0; j < (arys.get(i)).size() ;j++) {
				System.out.print(arys.get(i).get(j) + " ");
			}
			System.out.println();
		}
	}
	
	/**
	 * 並び替えてArrayListを返す
	 * 
	 * @param arys
	 * @return
	 */
	public static ArrayList<ArrayList<String>> sort (ArrayList<ArrayList<String>> arys) { 
		ArrayList <String> ary = new ArrayList<String> ();
		/* 擬似文字列のみを格納したArrayListを作成する */
		for (int j = 0;j < arys.size();j++)
			ary.add(arys.get(j).get(arys.get(j).size() - 1));
		/* ソート */
		Collections.sort(ary);
		/* 並び替えた後に配置するArrayList */
		ArrayList<ArrayList <String>> sortedAry = new ArrayList<ArrayList <String>>();
		for (int i = 0;i< ary.size();i++) {
			for (int j = 0;j < arys.size();j++) {
				if (ary.get(i).equals(arys.get(j).get(arys.get(j).size() - 1))) {
					sortedAry.add(arys.get(j));
				}
			}
		}
		return sortedAry;
	}
	
	
	public static void init(ArrayList <ArrayList<String>> arys){
		ArrayList <String> ary = new ArrayList <String> ();
		ary.add("rec1");
		ary.add("Apple");
		ary.add("A");
		ary.add("120");
		arys.add((ArrayList<String>)(ary.clone()));
		ary.clear();
		System.out.println("Check1 = " +  arys.size() + "|" +  arys.get(0).size());
		
		ary.add("rec2");
		ary.add("Orange");
		ary.add("B");
		ary.add("100");
		arys.add((ArrayList<String>)(ary.clone()));
		ary.clear();
		System.out.println("Check2 = " +  arys.size() + "|" +  arys.get(0).size());
		
		ary.add("rec3");
		ary.add("Grape");
		ary.add("A");
		ary.add("80");
		arys.add((ArrayList<String>)(ary.clone()));
		ary.clear();
		
		ary.add("rec4");
		ary.add("Orange");
		ary.add("A");
		ary.add("100");
		arys.add((ArrayList<String>)(ary.clone()));
		ary.clear();
		
		ary.add("rec5");
		ary.add("Apple");
		ary.add("C");
		ary.add("150");
		arys.add((ArrayList<String>)(ary.clone()));
		ary.clear();
		
		ary.add("rec6");
		ary.add("Orange");
		ary.add("A");
		ary.add("180");
		arys.add((ArrayList<String>)(ary.clone()));
		ary.clear();
	}


}