??xml version="1.0" encoding="utf-8" standalone="yes"?>欧洲亚洲一区,成人国产精品免费视频,北岛玲一区二区三区http://blogjava.net/hardson/category/13130.htmlzh-cnTue, 19 Feb 2008 08:20:32 GMTTue, 19 Feb 2008 08:20:32 GMT60用java apiq行sorthttp://www.aygfsteel.com/hardson/articles/92209.htmlhardsonhardsonSun, 07 Jan 2007 05:59:00 GMThttp://www.aygfsteel.com/hardson/articles/92209.htmlhttp://www.aygfsteel.com/hardson/comments/92209.htmlhttp://www.aygfsteel.com/hardson/articles/92209.html#Feedback0http://www.aygfsteel.com/hardson/comments/commentRss/92209.htmlhttp://www.aygfsteel.com/hardson/services/trackbacks/92209.html

用java apiq行sort

2004-04-06 12:22:48
Sun授权刊登

  本节中所描述的多态算?Qpolymorphic algorithmsQ是?JDK 所提供的可重复使用的功能性片Dc它们均取自Collectionsc,q采用静态方法(它的W一个参数是执行操作?对象集)的Ş式。由Javaq_所提供的绝大多数算法都操作于List对象Q但有两?(min ?max) 操作于Q意Collection对象。以下是关于法的描q?br />
  排序QSortingQ?

  排序法可ؓ一?List 重新排序Q以使它的元素按照某U排序关pL上升式排序。有两种形式的操作被提供。简单Ş式的操作只采用一?List q按照它的元素的自然排序q行排序。如果你对自然排序的概念不熟悉,那么应该重新阅读 对象排序QObject OrderingQ?

  sort 操作使用做了些优化的合ƈ排序Qmerge sortQ?法。如果你不知道它的含义,而又很看重它的话Q?请阅d于算法的L一U教U书。这个算法的重要之处是:
快? q个法被保证运行在 n log(n) 旉内,q在已基本排序的列表上,它的速度实质上更快。经验表明,它的速度与高度优化的快速排序(quicksortQ的速度差不多, Quicksort 一般被认ؓ快于合ƈ排序Q但它不E_Qƈ不保?n log(n)性能?

  E_: q就是说Q它不ؓ相等的元素重新排序。如果你为相同的列表做不同属性的重复排序Q这一点对你来说是十分重要的。如果一个邮件程序的用户为它的邮件箱按日期排序,然后又按发g人排序,q个用户自然地期望某个特定发件h的现在相ȝ消息列表(仍然Q按日期排序。这一点只有在W二个排序是E_的时候才能得以保证?br />
  以下?一个小E序Q它可按词典Q字母)序打印它的参数Q?
import java.util.*;

public class Sort {

public static void main(String args[]) {

List l = Arrays.asList(args);

Collections.sort(l);

System.out.println(l);

}

}
  让我们运行这个程序:

% java Sort i walk the line

[i, line, the, walk]

  演示q个E序只是Z表示我是毫无保留的:q个法实是象它们所昄的那L单。我不想低估你的能力而演C更ȝ例子?

  W二UŞ式的 sort除采用一?List 外,q采用一?Comparator q且使用 Comparator 对元素进行排序。还记得?Map 评l束时的排列l的例子? 它以一个非特定的顺序打印出排列l。假设你要以相反的大顺序打印它们,大的排列在前面。下列例子将告诉你如何借助 sort Ҏ的第二种形式而达C的目的?

回想一下,排序表是?List 对象的Ş式作Z?Map 中的D被存储的。修改后的打C码通过 Map ?values视图q行q代, 每一个通过最尺寸测试的List放进List 之中。然后,代码使用一个期?List 对象?Comparator ?List 排序Qƈ实现反{大小排序。最l,代码通过现在已排序的 List q行q代Q打印它的元素(排序l)。这个代码在 Perm ?main Ҏ末尾替代了打C?

// Make a List of all permutation groups above size threshold

List winners = new ArrayList();

for (Iterator i = m.values().iterator(); i.hasNext(); ) {

List l = (List) i.next();

if (l.size() = minGroupSize)

winners.add(l);

}

// Sort permutation groups according to size

Collections.sort(winners, new Comparator() {

public int compare(Object o1, Object o2) {

return ((List)o2).size() - ((List)o1).size();

}

});

// Print permutation groups

for (Iterator i=winners.iterator(); i.hasNext(); ) {

List l = (List) i.next();

System.out.println(l.size() + ": " + l);
}

  用与 Map 评中用的相同的词典运?q个E序 Qƈ使用相同的最排序组寸Q?Q,会生下列输?

% java Perm dictionary.txt 8

12: [apers, apres, asper, pares, parse, pears, prase, presa, rapes,
reaps, spare, spear]
11: [alerts, alters, artels, estral, laster, ratels, salter, slater,
staler, stelar, talers]
10: [least, setal, slate, stale, steal, stela, taels, tales, teals,
tesla]
9: [estrin, inerts, insert, inters, niters, nitres, sinter, triens,
trines]
9: [capers, crapes, escarp, pacers, parsec, recaps, scrape, secpar,
spacer]
9: [anestri, antsier, nastier, ratines, retains, retinas, retsina,
stainer, stearin]
9: [palest, palets, pastel, petals, plates, pleats, septal, staple,
tepals]
8: [carets, cartes, caster, caters, crates, reacts, recast, traces]
8: [ates, east, eats, etas, sate, seat, seta, teas]
8: [arles, earls, lares, laser, lears, rales, reals, seral]
8: [lapse, leaps, pales, peals, pleas, salep, sepal, spale]
8: [aspers, parses, passer, prases, repass, spares, sparse, spears]
8: [earings, erasing, gainers, reagins, regains, reginas, searing,
seringa]
8: [enters, nester, renest, rentes, resent, tenser, ternes, treens]
8: [peris, piers, pries, prise, ripes, speir, spier, spire]


上一?1 2 3 下一?amp;#61496;
a
hQShufflingQ?br />
  h法所做的正好?sort 相反: 它打乱在一?List 中可能有的Q何排列的t迹。也是_Z随机源的输入重排?List, q样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰q气的游戏中是非常有用的。例如,它可被用来؜排代表一副牌?Card 对象的一?List 。另外,在生成测试案例时Q它也是十分有用的?

  q个操作有两UŞ式。第一U只采用一?List q用默认随机源。第二种要求调用者提供一?Random 对象作ؓ随机源。这个算法的一些实际代码曾?List 评中被作ؓ例子使用?

  常规数据操作QRoutine Data ManipulationQ?br />
  Collections cMؓ?List 对象上的常规数据操作提供了三U算法。这些算法是十分单明了的:

  reverse: 反{在一个列表中的元素的序?br />
  fill: 用特定D盖在一?List 中的每一个元素。这个操作对初始化一?List 是十分有用的?br />
  copy: 用两个参敎ͼ一个目?List 和一个源 List, 源的元素拷贝到目标Qƈ覆盖它的内容。目?List 臛_与源一样长。如果它更长Q则在目?List 中的剩余元素不受影响?br />
  搜烦QSearchingQ?br />
  binary search Q二q制搜烦Q算法用二进制搜索算法在一个已排序?List 中寻扄定元素。这个算法有两种形式。第一U采用一?List 和一个要L的元?( "搜烦键(search keyQ?)。这UŞ式假?List 是按照它的元素的自然排序排列成上升顺序的。第二种形式除采?List 外,q采用一?Comparator 以及搜烦键,q假?List 是按照特?Comparator 排列成上升顺序的?排序法(描述见上) 可优先于 binarySearch 而被用来为List 排序?

  两种形式的返回值是相同? 如果 List 包含搜烦键,它的索引被q回Q如果不包括Q则q回gؓ (-(insertion point) - 1), q里?insertion point 被定义ؓ一个点Q从q个点该值将被插入到q个 List 中:大于该值的W一个元素的位置索引Q或list.size()?选用q个不可否认的难看的公式是ؓ了保证如果且仅如果搜索键被发玎ͼ则返回值将{于0。它基本上是一个将布尔逻辑 ("found") 和整?("index") l合到单一的intq回值的大杂烩?

  下列惯用E序?binarySearch 操作的两UŞ式均适用Q它L特定搜烦键,如果搜烦键不出现Q则它插入到适当的位|?

int pos = Collections.binarySearch(l, key);

if (pos < 0)

l.add(-pos-1, key);

  L极|Finding Extreme ValuesQ?

  min ?max 法分别q回包含在特?Collection 中的最和最大元素。这两个操作都各有两UŞ式,单Ş式只采用一?Collection, q按照元素的自然排序q回最?(或最? 元素Q另一UŞ式除采用 Collection 之外Q还采用一?ComparatorQƈ按照特定 Comparatorq回最(或最大)元素?

  q些是由Java q_提供的作用于?List 对象相对的Q?Collection 对象上的仅有法Q就象上面提到的 fill 法一Pq些法都是非常单明了的Q它们是Javaq_为程序员特别提供的便利工兗?/td>


hardson 2007-01-07 13:59 发表评论
]]>
处理参数传递的jsp标签http://www.aygfsteel.com/hardson/articles/66399.htmlhardsonhardsonTue, 29 Aug 2006 05:24:00 GMThttp://www.aygfsteel.com/hardson/articles/66399.htmlhttp://www.aygfsteel.com/hardson/comments/66399.htmlhttp://www.aygfsteel.com/hardson/articles/66399.html#Feedback0http://www.aygfsteel.com/hardson/comments/commentRss/66399.htmlhttp://www.aygfsteel.com/hardson/services/trackbacks/66399.html一、定义标{

package com.taglib.pageparameter;

import javax.servlet.ServletRequest;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
/**
 * <p>Title: 参数传递标{?lt;/p>
 * <p>Description: l一处理面间的参数传?lt;/p>
 * @author Administrator
 *
 */
public class ddd extends TagSupport {
  private String paraNames = null;  //参数?以WebConfig.SEPARATE分隔

  public void setParaNames(String paraNames){
    this.paraNames = paraNames ;
  }
  public String getParaNames(){
    return this.paraNames;
  }

  public int doStartTag(){
   if(this.paraNames==null)
    return EVAL_BODY_INCLUDE;
    String[] paras = this.paraNames.split(WebConfig.SEPARATE);   
    this.transactPara(pageContext,paras);
    return EVAL_BODY_INCLUDE ;
  }

  public int doEndTag(){
    return EVAL_PAGE ;
  }
 
  /**
   * 处理参数传?br />   * 规则:
   * 1,如果不能在request范围内找到相应name的参?讄gؓWebConfig.NULL=""
   * 2,如果atrribute,parameter中同时存在同名的参数,以attribute中ؓ?br />   * 3,所有jsp面所需的参数{换ؓattribute保存,在jsp面中通过<bean:write name="attributeName" />调用
   * 4,涉及处理的参数包?String[] args
   * @param pageContext PageContext
   * @param args String[]
   */
  public void transactPara(PageContext pageContext,String[] args){
    for (int i = args.length ; --i >= 0;) {
      ServletRequest request = pageContext.getRequest() ;
      Object attr=(String)request.getAttribute(args[i]);
      String para=request.getParameter(args[i]);
      if(attr==null)
        request.setAttribute(args[i], para==null?WebConfig.NULL:para);
    }
  }

}
相关c?br />package com.taglib.pageparameter;

public class WebConfig{
   public static final String SEPARATE=";";//前台web参数间隔ȝ?br />   public final static String NULL = "";  //面间参C?name为空时设|的~省?br />}

二、标{֮义tld文g
PageParameter.tld

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"<taglib>
 <tlibversion>1.0</tlibversion>
 <jspversion>1.1</jspversion>
 <shortname>PageParameter</shortname>
 <info></info>

  <tag>
    <name>ParameterTransact</name>
    <tagclass>com.taglib.pageparameter.PageParameterTag</tagclass>
    <bodycontent>empty</bodycontent>
    <info></info>
   <attribute>
      <name>paraNames</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
   </attribute>
 </tag>
</taglib>

三、在web.xml中加载标{?br />四、jsp面调用

<%@ page import="package com.taglib.pageparameter.WebConfig" %>
<%@ taglib uri="/WEB-INF/Archive/PageParameter.tld" prefix="PageParameter" %>

<PageParameter:ParameterTransact paraNames='<%="urlSQL"+WebConfig.SEPARATE+"page"%>'/>



hardson 2006-08-29 13:24 发表评论
]]>
[转帖]ant的build.xml文g详解备忘http://www.aygfsteel.com/hardson/articles/60802.htmlhardsonhardsonSat, 29 Jul 2006 16:19:00 GMThttp://www.aygfsteel.com/hardson/articles/60802.htmlhttp://www.aygfsteel.com/hardson/comments/60802.htmlhttp://www.aygfsteel.com/hardson/articles/60802.html#Feedback0http://www.aygfsteel.com/hardson/comments/commentRss/60802.htmlhttp://www.aygfsteel.com/hardson/services/trackbacks/60802.html阅读全文

hardson 2006-07-30 00:19 发表评论
]]>
按格式生成序P?001,0002...9999http://www.aygfsteel.com/hardson/articles/58478.htmlhardsonhardsonSun, 16 Jul 2006 16:53:00 GMThttp://www.aygfsteel.com/hardson/articles/58478.htmlhttp://www.aygfsteel.com/hardson/comments/58478.htmlhttp://www.aygfsteel.com/hardson/articles/58478.html#Feedback0http://www.aygfsteel.com/hardson/comments/commentRss/58478.htmlhttp://www.aygfsteel.com/hardson/services/trackbacks/58478.html/***
  * 按格式生成序P?001,0002...9999
  * @param idx 序号L
  * @param scale 位数
  * @return 按位数格式化的序P?019
  */
 public static String buildSerial(int num,int scale){
  
  //格式化的位数于{于0则抛出参数异?br />  if(scale<=0)
   throw new IllegalArgumentException("scaleQ?+scale);
  
  //计算序列L位数
  int count=0;
  int aIdx=num;
  while((aIdx=aIdx/10)>0)
   count++;
  count++;   
  
  //序列L位数大于格式化位敎ͼ或者序列号的值小于等?Ӟ抛出参数异常
  if(count>scale || num<=0)
   throw new IllegalArgumentException("idxQ?+num);
 
  //在序列前I出的位上添?
  StringBuffer buf=new StringBuffer(scale);     
  for(int i=scale-count;--i>=0;)
   buf.append(0);

  //d序列号?br />  buf.append(num);
  return buf.toString();
 }



hardson 2006-07-17 00:53 发表评论
]]>
java中判断字W串是否为数字的三种Ҏ http://www.aygfsteel.com/hardson/articles/58476.htmlhardsonhardsonSun, 16 Jul 2006 16:44:00 GMThttp://www.aygfsteel.com/hardson/articles/58476.htmlhttp://www.aygfsteel.com/hardson/comments/58476.htmlhttp://www.aygfsteel.com/hardson/articles/58476.html#Feedback2http://www.aygfsteel.com/hardson/comments/commentRss/58476.htmlhttp://www.aygfsteel.com/hardson/services/trackbacks/58476.html  
1用JAVA自带的函?br />public static boolean isNumeric(String str){
  
for (int i = str.length();--i>=0;){   
   
if (!Character.isDigit(str.charAt(i))){
    
return false;
   }
  }
  
return true;
 }

2用正则表辑ּ
public static boolean isNumeric(String str){
    Pattern pattern = Pattern.compile("[0-9]*");
    return pattern.matcher(str).matches();   
 }

3用ascii?br />
public static boolean isNumeric(String str){
   for(int i=str.length();--i>=0;){
      int chr=str.charAt(i);
      if(chr<48 || chr>57)
         return false;
   }
   return true;
}


hardson 2006-07-17 00:44 发表评论
]]>
վ֩ģ壺 | | | | | | | ͨ| | żҸ| ݳ| | ͭϿ| | | | ʯ| | | ˮ| | Զ| ǭ| | | | Դ| ϴ| | ʯ| ԭ| | IJ| С| ²| ƽɽ| | | | | ̩|