<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    List的排序是經常遇到的問題,一般都是用一個實現了Comparator接口的類實現。
    .比如我有一個Person類,
    它的實例對象存儲在ArrayList數組中,現在要把ArrayList數組中的Person對象按照年齡排序.
    其實這種情況經常遇到.
    下面給出源代碼:

    1:Person.java文件:-------------------------------
    public class Person{
    ?String name;
    ?int age;
    ?
    ?public Person(String name,int age){
    ? this.name = name;
    ? this.age = age;
    ?
    ?}

    ?public int getAge() {
    ? return age;
    ?}

    ?public void setAge(int age) {
    ? this.age = age;
    ?}

    ?public String getName() {
    ? return name;
    ?}

    ?public void setName(String name) {
    ? this.name = name;
    ?}

    }


    2:Mycomparator.java-------------------------------
    //實現Comparator接口,也就是定義排序規則,你幾乎可以定義任何規則
    import java.util.*;
    public class Mycomparator implements Comparator{

    ?public int compare(Object o1,Object o2) {
    ? Person p1=(Person)o1;
    ? Person p2=(Person)o2;?
    ? if(p1.age<p2.age)
    ?? return 1;
    ? else
    ?? return 0;
    ?}

    }

    3:ListSort.java------------------------------------

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;

    public class ListSort {
    ?public static void main(String[] args){
    ? ArrayList list = new ArrayList();
    ? list.add(new Person("lcl",28));
    ? list.add(new Person("fx",23));
    ? list.add(new Person("wqx",29));
    ? Comparator comp = new Mycomparator();
    ? Collections.sort(list,comp);?
    ? for(int i = 0;i<list.size();i++){
    ?? Person p = (Person)list.get(i);
    ?? System.out.println(p.getName());
    ? }?
    ?
    ?}

    }

    posted @ 2006-07-06 18:18 負人博客 閱讀(1210) | 評論 (0)編輯 收藏

    一:取得數據庫連接
    ?? 1.用DriverManager取數據庫連接
    ?? ?例子
    ??? ??String className,url,uid,pwd;
    ??? ??className = "oracle.jdbc.driver.OracleDriver";
    ?? ? ?url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;
    ??? ??uid = "system";
    ??? ??pwd = "manager";
    ???? ?Class.forName(className);
    ??Connection cn = DriverManager.getConnection(url,uid,pwd);
    ?? 2.通過JNDI取得數據庫連接
    ?用jndi(java的命名和目錄服務)方式
    ? ?例子
    ??? ??String jndi = "jdbc/db";
    ??? ??Context ctx = (Context) new InitialContext().lookup("java:comp/env");
    ??? ??DataSource ds = (DataSource) ctx.lookup(jndi);
    ??? ??Connection cn = ds.getConnection();
    二:執行sql語句
    ?1.用Statement來執行sql語句
    ?? ??String sql;
    ?? ??Statement sm = cn.createStatement();
    ?? ??sm.executeQuery(sql); // 執行數據查詢語句(select)
    ?? ??sm.executeUpdate(sql); // 執行數據更新語句(delete、update、insert、drop等)statement.close();
    ? ?2.用PreparedStatement來執行sql語句
    ?? ??String sql;
    ?? ??sql? = "insert into user (id,name) values (?,?)";
    ?? ??PreparedStatement ps = cn.prepareStatement(sql);
    ?? ??ps.setInt(1,xxx);
    ?? ??ps.setString(2,xxx);
    ? ??...
    ?? ??ResultSet rs = ps.executeQuery(); // 查詢
    ?? ??int c = ps.executeUpdate(); // 更新
    三:處理執行結果
    ? ?查詢語句,返回記錄集ResultSet
    ? ?更新語句,返回數字,表示該更新影響的記錄數
    ? ?ResultSet的方法
    ? ??1、next(),將游標往后移動一行,如果成功返回true;否則返回false
    ? ??2、getInt("id")或getSting("name"),返回當前游標下某個字段的值
    四:釋放連接
    ? cn.close();
    ? 一般,先關閉ResultSet,然后關閉Statement(或者PreparedStatement);最后關閉Connection


    可滾動、更新的記錄集
    ?1、創建可滾動、更新的Statement
    ? Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);
    ? 該Statement取得的ResultSet就是可滾動的
    ?2、創建PreparedStatement時指定參數
    ? PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

    ? ResultSet.absolute(9000);?
    批量更新
    ?1、Statement
    ? Statement sm = cn.createStatement();
    ? sm.addBatch(sql1);
    ? sm.addBatch(sql2);
    ? ...
    ? sm.executeBatch()
    ? 一個Statement對象,可以執行多個sql語句以后,批量更新。這多個語句可以是delete、update、insert等或兼有
    ?2、PreparedStatement
    ? PreparedStatement ps = cn.preparedStatement(sql);
    ? {
    ?? ps.setXXX(1,xxx);
    ?? ...
    ?? ps.addBatch();
    ? }
    ? ps.executeBatch();
    ? 一個PreparedStatement,可以把一個sql語句,變換參數多次執行,一次更新。

    ?
    事務的處理
    ?1、關閉Connection的自動提交
    ? cn.setAutoCommit(false);
    ?2、執行一系列sql語句
    ? 要點:執行每一個新的sql語句前,上一次執行sql語句的Statement(或者PreparedStatemet)必須先close
    ?Statement sm ;
    ?sm = cn.createStatement(insert into user...);
    ?sm.executeUpdate();
    ?sm.close();

    ?sm = cn.createStatement("insert into corp...);
    ?sm.executeUpdate();
    ?sm.close();

    ?3、提交
    ? cn.commit();
    ?4、如果發生異常,那么回滾
    ? cn.rollback();

    posted @ 2006-07-06 18:15 負人博客 閱讀(1253) | 評論 (0)編輯 收藏

    1 Properties類直接讀取屬性文件
    ?
    public class Test {
    ?public static void main(String[] args) {
    ??InputStream is = Test.class.getResourceAsStream("nojar.properties");
    ??if (is == null)
    ???System.out.println("文件找不到");
    ??Properties prop = new Properties();
    ??try {
    ???prop.load(is);
    ??} catch(Exception e) {
    ???e.printStackTrace();
    ??}
    ??System.out.println(prop.getProperty("test"));
    ?}
    }
    2 通過ResourceBundle讀取屬性文件

    public class Test {
    ?public static void main(String[] args) {
    ??ResourceBundle rb = ResourceBundle.getBundle("test");
    ??System.out.println(rb.getString("test"));
    ?}
    }

    posted @ 2006-07-06 18:13 負人博客 閱讀(385) | 評論 (0)編輯 收藏

    對于protected關鍵字經常在使用中弄混,特寫一小例進行測試
    Protected方法或屬性例子:


    Package com.first;

    Public class Test1 {
    ?Protected String a;
    Protected void test() {
    ? System.out.println(“it is a test”);
    }
    }
    package com.second;
    import com.first.*;
    public class Test2 extends Test1 {
    ?Test1 test1 = new Test1();
    Test2 test2 = new Test2();
    test1.a = “test”;//錯誤
    test2.a = “test”; //正確
    test1.test();//錯誤
    test2.test();//正確
    }
    ///原因,protected定義的東西在不同包內不能訪問,只有繼承的子類可以訪問

    posted @ 2006-07-06 18:13 負人博客 閱讀(320) | 評論 (0)編輯 收藏

    由于公司的項目需要這幾天一直在研究jasperreport和ireport,到現在已經研究了一段時間了,在學習過程中遇到了一些問題同時也學到了一些技巧,特做小文以享于他人.
    1。工具簡介
    ????? jasperreport和ireport都是開源軟件,可以免費下載。
    ireport使jasperreport的一個可視化設計工具,里面集成了一些畫圖工具和數據庫的操作,用ireport做出來的是一個jrxml文件也可以在里面直接編輯此文件(比較麻煩)。經過運行編譯后生成jasper文件,這個文件是我們需要的東西,將來我們做報表讀取的就是這個文件。工具的其他一些東西像下載地址之類的網上到處都是,在此就不細說了。下面我就把我這段時間遇到的問題在這做一個總結。
    2。用ireport遇到的一些問題
    ??????(1)解決里面的中文問題:
    ????????????? 在pdf里面不能顯示中文
    ????????????? 解決方案:
    ???????????????? 1。將itextasian.jar下載下來(google一搜就有)放到? ireport目錄底下的lib文件夾下即可。有人還說要再放一個itext.jar到
    lib目錄下,但是在我的應用過程中發現不放此文件也可以。
    ???????????????? 2。將每個文本域屬性當中的PDF font name改為STSong-Light并且將PDF encoding里面的設置改為UniGB-UCS2-H (Chinese Simplified),此時應該差不多了。
    ???????(2)?解決IE里面的斜線問題
    ????????????用ireport畫的斜線無法在IE里面顯示(因為html本身無法支持斜線)
    ??????????? 解決方案:將需要顯示斜線的地方做成圖片,然后利用image控件加載圖片即可
    ????????? (3)解決IE里面無法顯示的問題
    ???????????????? 在ireport里面畫出的圖表無法在ie里面顯示
    ???????????????? 解決方案:在Ireport里面畫圖的時候不要用直線工具,里面的線全部用static text文本框的border畫出。也就是說,里面的圖表全部都是用文本框堆積成的。切記:圖表里面的所有元素都不能交叉,如果有一點交叉或重疊,在IE里面都是顯示不全的。
    3。應用時常見的幾種方式:
    ?????? 由于html自身的局限性,以及html顯示的問題,現在在網絡上傳輸的打印很多都采用pdf格式輸出。jasperreport對pdf做了很好的支持!
    ?????? 個人根據需要可以改寫jasperreport的代碼,以使之更好的為自己服務。
    ???? 1.可以把數據放到map中傳遞到pdf打印頁面(一般適合類似票據打印)???
    ??????? Map parameters = new HashMap();//參數

    ??????? 通過把map輸出到ireport模板中,得到要打印的票據

    ???? 2.可以把結果集放到collection中,這樣想打印什么都可以了!

    ???? 3.剩下的就是寫sql了,通過map把參數傳遞過去,利用參數就可以寫要查詢的結果集了。

    注:在ireport通過查詢語句取結果集的時候發現定義的參數順序和ireport生成模板的順序不一致,這樣在sql中如果條件是(a,b,c)結果它把參數的順序寫成了(b,c,a)或者什么的。不知道這是不是ireport的bug。

    posted @ 2006-07-06 17:34 負人博客 閱讀(1959) | 評論 (0)編輯 收藏

    ???? 在我們的日常開發中,經常需要通過輸出一些信息進行程序的調試,如果到處都用system.out.println()則在項目發布之后要逐一刪除,而log4j提供了一種新的調試輸出機制以解決輸出的問題。log4j的原理是使用一個配置文件log4j.properties進行管理,在調試的時候可以把輸出級別調低,項目正式發布之后把級別調高,這樣以前的一些輸出就可以屏蔽了,不用到程序當中再進行逐一刪除。關于log4j的介紹網上很多,隨便google一下就可以順利的使用log4j了。在這里介紹一下log4j和common-logging的聯合使用,因為在很多框架當中都是結合了common-logging和log4j的應用。像spring之類的框架里面存在很多debug輸出,用common-logging可以很容易的打印輸出,以用于了解spring的運行機制!
    ?? 使用介紹:
    ?? 1.下載jar包:
    ?????? log4j-1.2.9.jar和commons-logging.jar
    ?? 2.在web目錄的classes下面添加兩個文件:commons-logging.properties和log4j.properties??????
    ????? log4j.properties(例子):
    ????????? ##LOGGERS##
    ???? ???? #define a logger
    ????????? log4j.rootLogger=INFO,console,file
    ????????? #log4j.rootLogger=DEBUG,console,file
    ????????? ##APPENDERS##
    ???????? #define an appender named console,which is set to be a ConsoleAppender
    ???????? log4j.appender.console=org.apache.log4j.ConsoleAppender
    ???????? #define an appender named file,which is set to be a RollingFileAppender
    ??? ???? log4j.appender.file=org.apache.log4j.RollingFileAppender
    ???????? log4j.appender.file.File=log-wst.txt
    ????? ?? ##LAYOUTS##
    ????? ?? #assign a SimpleLayout to console appender
    ???????? log4j.appender.console.layout=org.apache.log4j.SimpleLayout
    ???????? #assign a PatternLayout to file appender
    ???????? log4j.appender.file.layout=org.apache.log4j.PatternLayout
    ???????? log4j.appender.file.layout.ConversionPattern=%p - %m%n
    ?????
    ????? commons-logging.properties(例子)
    ????????? ##
    ????????? org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog
    ?? 3.應用實例:
    ???? package com.wes.test;
    ???? import org.apache.commons.logging.Log;
    ???? import org.apache.commons.logging.LogFactory;
    ??? public abstract class BaseClass{
    ???????? /** 用于日志輸出 */
    ???????? protected Log log = LogFactory.getLog(this.getClass());
    ??? }
    ??? 這樣在子類中可以直接調用log輸出即可:
    ?? public class?DerivedClass extends BaseClass {
    ???????? pulbic void test() {
    ?????????????//如果log4j.properties文件配置的級別<=info則可以正常輸出(info/debug)?
    ??????????? log.info("這是info級別的輸出");???
    ?????????????//如果log4j.properties文件的級別為debug則可以正常輸出(debug)?
    ??????????? log.debug("這是debug級別的輸出");
    ???????? }
    ?? }

    ?

    posted @ 2006-07-06 17:31 負人博客 閱讀(2932) | 評論 (0)編輯 收藏

    僅列出標題
    共3頁: 上一頁 1 2 3 

    posts - 26, comments - 5, trackbacks - 0, articles - 8

    Copyright © 負人博客

    主站蜘蛛池模板: 在线涩涩免费观看国产精品| 久久国产色AV免费看| 在线观看的免费网站| 亚洲A∨午夜成人片精品网站| 国产成人亚洲精品青草天美| 亚州**色毛片免费观看| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 亚洲免费精彩视频在线观看| 亚洲国产AV无码专区亚洲AV| 久久免费高清视频| 免费大黄网站在线观| 特级毛片在线大全免费播放| 国产亚洲日韩在线三区| 日韩视频免费在线观看| 亚洲AV永久无码精品一区二区国产| 国产亚洲视频在线观看网址| 亚洲精品一级无码鲁丝片 | 亚洲国产精品国自产拍电影| 99久在线国内在线播放免费观看| 国产jizzjizz视频免费看| 久久久综合亚洲色一区二区三区 | 2022国内精品免费福利视频| 国产免费av片在线看| 国产成人亚洲综合a∨| 国产亚洲日韩在线三区| 91精品成人免费国产片| 亚洲国产成人久久综合碰碰动漫3d| 30岁的女人韩剧免费观看| 亚洲精品中文字幕| 我要看WWW免费看插插视频| 国产成人亚洲精品播放器下载| 亚洲人成精品久久久久| yellow免费网站| 亚洲乱码国产一区网址| 久久久久成人片免费观看蜜芽| jlzzjlzz亚洲jzjzjz| 国产高清视频免费在线观看| 亚洲精品自在线拍| 亚洲av无码乱码在线观看野外| 免费无码成人AV在线播放不卡| 亚洲av永久中文无码精品|