BeanのListをBeanのKey毎にListを作成して、そのKeyで作成したListをValueとするMAPの作成する例

入力データ

Map<Integer, List<DataBean>> map = new HashMap<Integer, List<DataBean>>();

List<DataBean> srcList = new ArrayList<DataBean>();

srcList.add(new DataBean(1,4,"四番"));
srcList.add(new DataBean(3,3,"五番"));
srcList.add(new DataBean(1,6,"二番"));
srcList.add(new DataBean(2,7,"一番"));
srcList.add(new DataBean(2,5,"三番"));
srcList.add(new DataBean(1,2,"六番"));
srcList.add(new DataBean(3,1,"七番"));


List<DataBean> targetList = new ArrayList<DataBean>();
//集約対象のID
    Integer tmpId = null;
    //次のIDの変更有無
boolean flag = false;

Iterator<DataBean> iteData = srcList.iterator();

while(true){

if(iteData.hasNext()){

DataBean data = iteData.next();
        //IDが変わる場合
if(!flag) {
tmpId = data.getId();
flag = true;
}
        //集約する場合
if(tmpId.equals(data.getId())) {

targetList.add(data);
          //集約済みなので削除
iteData.remove();

}
}else {
        //集約対象がなくなったので、MAPに設定
map.put(tmpId, targetList);
        //集約済みListの初期化(空の新しいインスタンスを設定)
targetList = new ArrayList<DataBean>();
        //初期化
flag = false;
        //イテレータの再作成(残った要素での再作成)
iteData = srcList.iterator();
        //全ての要素がなくなったので、処理のLoopから抜ける
if(!iteData.hasNext()){
break;
}
}

}

    //MAP内容を表示
Collection<List<DataBean>> dataLists = map.values();

Iterator<List<DataBean>> iteList = dataLists.iterator();

while(iteList.hasNext()) {

System.out.println("--ID START--");

List<DataBean> list = iteList.next();

Iterator<DataBean> iteDataDisp = list.iterator();

while(iteDataDisp.hasNext()) {


DataBean data = iteDataDisp.next();

System.out.print("ID:"+ data.getId() + "ID2:"+data.getId2()
+ "NAME:"+ data.getName());

}

System.out.println("\n--ID END--\n\n\n");

}

return map;
}
MySQL ユーザのアクセス制限設定

リモートのサーバにアクセスする場合、rootユーザでも権限がない場合

がある。

その場合、以下のようなコマンドでユーザとアクセス元を指定して

権限を付与する必要がある。

1. userに対してどこのマシンからでもログイン

できるようにする設定(パスワード:user)

GRANT ALL PRIVILEGES ON *.* TO user@"%"

IDENTIFIED BY 'user' WITH GRANT OPTION;

2. rootに対してどこのマシンからでもログインできる

ようにする設定(パスワードなし)

GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY ''

WITH GRANT OPTION;


MySQLの大文字小文字識別のデフォルト設定はOSにより

異なるそうです。Winはデフォルト大文字小文字

の区別なし。

なので、本番環境がUNIX系で開発環境がWindowsの場合、

テーブル名やカラム名に大文字と小文字を意識して

おかないと、UNIX系の環境で突然DBアクセスに失敗する

ことがある。

その設定は mysql.ini に以下のように設定を

追加してMySQLを再起動する

lower_case_table_name = 0