Archive

文章標籤 ‘sort’

排序Vector for Java

2009年1月19日 尚無評論

這次是說的是如何將Vector進行排序

先前大致瞭解Java2本身有提供排序功能,但通常都在寫資料庫的程式
只要是資料排序,一般都在資料庫裡做掉了
很少很少需要在程式進行排序,剛好最近有study一下
寫上來與大家分享..^^

JAVA很簡單,只要是implement List,就可以透過Collections就可以排序啦
以下範例就是一個很簡單的排序:

       Vector v = new Vector();

       v.add(“anupama”);
       v.add(“jyothi”);
       v.add(“durga”);
       v.add(“vaseef”);
       v.add(“priya”);

       Collections.sort(v);

       System.out.println(“Vector elements after sorting : “);
       for(int i=0; i<v.size(); i++)
       System.out.println(v.get(i));

而如果Vector存入的不是字串這種單純的物件呢?
Collections可以透過實作Comparator來進行排序

以下就是要針對GoodItem的某一屬性進行比較排序,所以實作Comparator的compare即可
當比較大時就回傳1,反之就回傳-1:

public class PitemSort implements Comparator{
       public int compare(Object obj1, Object obj2){
           GoodItem o1=(GoodItem) obj1;
           GoodItem o2=(GoodItem) obj2;

           if(o1.getPrice()>o2.getPrice()){
               return 1;
           }
           if(o1.getPrice()<o2.getPrice()){
               return -1;
           }
           return 0;
       }
   }

而要使用時,只要import進行在sort時,指定要以實作的Comparator進行排序即可,範例指令如下: 

      Collections.sort(v, new PitemSort());

如此一來,就可以很簡單進行排序啦,不用再自己寫排序方法啦,而Collections非常的彈性,如果要進行
複雜的排序,應該都可以達到,今天就先講簡單的就好!有需要請自行去查API囉!!

參考資料:
http://www.programmersheaven.com/mb/java/381483/381921/re-sorting-in-vector/?S=B20000

Categories: JAVA Tags: , ,

Oracle 排序欄位 有NULL值處理方法

2007年11月2日 尚無評論

 
Oracle在Order by 時會預設認為null是最大值,所以如果是ASC升序則排在最後,DESC降序則排在最前

有幾種方式可以處理排序欄位有 null 值,大致如下:

1.使用nulls first 或者nulls last 語法

Nulls first和nulls last是Oracle Order by支援的語法 (mysql 不支援 ,但此為  SQL 99 standard 語法)

如果Order by 中指定了運算式 Nulls first則表示null值的記錄將排在最前(不管是asc 還是 desc)
反之  Nulls last則表示null值的記錄將排在最後 (不管是asc 還是 desc)
使用語法如下:

–將nulls始終放在最後
select * from products order by order_date desc nulls last

2、使用nvl函數

nvl函數可以將輸入參數為空時轉換為一特定值,如
nvl(employee_name,’張三’)表示當employee_name為空時則返回’張三’,如果不為空則返回employee_name
通過這個函數可以定制null的排序位置。

3、使用decode函數

decode函數比nvl函數更強大,同樣它也可以將輸入參數為空時轉換為一特定值,如
decode(employee_name,null,’張三’, employee_name)表示當employee_name為空時則返回’張三’,如果不為空則返回employee_name
通過這個函數可以定制null的排序位置。

4、使用case 語法

Case語法是Oracle 9i後開始支援的,是一個比較靈活的語法,同樣在排序中也可以應用
如:
select *
from employee
order by  (case employee_name
           when null then
            '張三'
           else
            employee_name
         end)
表示當employee_name為空時則返回’張三’,如果不為空則返回employee_name
通過case語法同樣可以定制null的排序位置。

文章出處 :http://211.147.225.34/gate/big5/oracle.chinaitlab.com/induction/727571.html

Categories: Database Tags: , , ,