??xml version="1.0" encoding="utf-8" standalone="yes"?>www.神马久久,牛牛影视精品影视,羞羞视频在线观看http://www.aygfsteel.com/xiaoshi/archive/2011/01/08/342608.html石~~石~~Sat, 08 Jan 2011 14:46:00 GMThttp://www.aygfsteel.com/xiaoshi/archive/2011/01/08/342608.htmlhttp://www.aygfsteel.com/xiaoshi/comments/342608.htmlhttp://www.aygfsteel.com/xiaoshi/archive/2011/01/08/342608.html#Feedback0http://www.aygfsteel.com/xiaoshi/comments/commentRss/342608.htmlhttp://www.aygfsteel.com/xiaoshi/services/trackbacks/342608.htmlc?HASHSET<E>
所有已实现的接口:Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>

此类实现 Set 接口Q由哈希表(实际上是一?HashMap 实例Q支持。它不保?set 的P代顺序;特别是它不保证该序恒久不变。此cd怋?null 元素?/div>
此类为基本操作提供了E_性能Q这些基本操作包?add、remove、contains ?sizeQ假定哈希函数将q些元素正确地分布在桶中。对?set q行q代所需的时间与 HashSet 实例的大(元素的数量)和底?HashMap 实例Q桶的数量)?#8220;定w”的和成比例。因此,如果q代性能很重要,则不要将初始定w讄得太高(或将加蝲因子讄得太低)?/div>
注意Q此实现不是同步的。如果多个线E同时访问一个哈?setQ而其中至一个线E修改了?setQ那么它必须 保持外部同步。这通常是通过对自然封装该 set 的对象执行同步操作来完成的。如果不存在q样的对象,则应该?Collections.synchronizedSet Ҏ?#8220;包装” set。最好在创徏时完成这一操作Q以防止对该 set q行意外的不同步讉KQ?/div>
   Set s = Collections.synchronizedSet(new HashSet(...));

c?HASHMAP<K,V>
所有已实现的接口:Serializable, Cloneable, Map<K,V>
Z哈希表的 Map 接口的实现。此实现提供所有可选的映射操作Qƈ允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外QHashMap cM Hashtable 大致相同。)此类不保证映的序Q特别是它不保证该顺序恒久不变?/div>



c?CONCURRENTHASHMAP<K,V>
所有已实现的接口:
Serializable, ConcurrentMap<K,V>, Map<K,V>


支持获取的完全ƈ发和更新的所期望可调整ƈ发的哈希表。此c遵守与 Hashtable 相同的功能规范,q且包括对应?Hashtable 的每个方法的Ҏ版本。不q,管所有操作都是线E安全的Q但获取操作?必锁定,q且?支持以某U防止所有访问的方式锁定整个表。此cd以通过E序完全?Hashtable q行互操作,q取决于其线E安全,而与其同步细节无兟?/div>


此类?Hashtable 怼Q但?HashMap 不同Q它?允许?null 用作键或倹{?/div>



石~~ 2011-01-08 22:46 发表评论
]]>ARRAYLIST VECTOR LINKEDLIST 区别与用?/title><link>http://www.aygfsteel.com/xiaoshi/archive/2011/01/08/342573.html</link><dc:creator>石~~</dc:creator><author>石~~</author><pubDate>Sat, 08 Jan 2011 05:37:00 GMT</pubDate><guid>http://www.aygfsteel.com/xiaoshi/archive/2011/01/08/342573.html</guid><wfw:comment>http://www.aygfsteel.com/xiaoshi/comments/342573.html</wfw:comment><comments>http://www.aygfsteel.com/xiaoshi/archive/2011/01/08/342573.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xiaoshi/comments/commentRss/342573.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xiaoshi/services/trackbacks/342573.html</trackback:ping><description><![CDATA[<span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">最q用CQ所以依然是转蝲</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">ArrayList 和Vector是采用数l方式存储数据,此数l元素数大于实际存储的数据以便增加和插入元素Q都允许直接序号索引元素Q但是插入数据要设计到数l元素移动等内存操作Q所以烦引数据快插入数据慢,Vector׃使用了synchronizedҎQ线E安全)所以性能上比ArrayList要差QLinkedList使用双向链表实现存储Q按序号索引数据需要进行向前或向后遍历Q但是插入数据时只需要记录本的前后即可,所以插入数度较快!</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">U性表Q链表,哈希表是常用的数据结构,在进行Java开发时QJDK已经为我们提供了一pd相应的类来实现基本的数据l构。这些类均在java.util包中。本文试N过单的描述Q向读者阐q各个类的作用以及如何正用这些类?nbsp;</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">Collection</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">├List</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">│├LinkedList</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">│├ArrayList</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">│└</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Vector</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">│ └Stack</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">└Set</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">Map</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Hashtable</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">├HashMap</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">└WeakHashMap</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">Collection接口</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  Collection是最基本的集合接口,一个Collection代表一lObjectQ即Collection的元素(ElementsQ。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接承自Collection的类QJava SDK提供的类都是l承自Collection?#8220;子接?#8221;如List和Set?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  所有实现Collection接口的类都必L供两个标准的构造函敎ͼ无参数的构造函数用于创Z个空的CollectionQ有一个Collection参数的构造函数用于创Z个新的CollectionQ这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个P代子Q用该q代子即可逐一讉KCollection中每一个元素。典型的用法如下Q?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">    Iterator it = collection.iterator(); // 获得一个P代子</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">    while(it.hasNext()) {</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">      Object obj = it.next(); // 得到下一个元?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">    }</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  由Collection接口z的两个接口是List和Set?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">List接口</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  List是有序的CollectionQ用此接口能够_的控制每个元素插入的位置。用戯够用烦引(元素在List中的位置Q类g数组下标Q来讉KList中的元素Q这cM于Java的数l?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">和下面要提到的Set不同QList允许有相同的元素?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  除了hCollection接口必备的iterator()Ҏ外,Listq提供一个listIterator()ҎQ返回一个ListIterator接口Q和标准的Iterator接口相比QListIterator多了一些add()之类的方法,允许dQ删除,讑֮元素Q还能向前或向后遍历?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  实现List接口的常用类有LinkedListQArrayListQ?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Vector</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">和Stack?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">LinkedListc?/span> <div><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><dt style="color: #000000; font-family: Simsun; line-height: normal; font-size: medium; "><strong>所有已实现的接口:</strong></dt><dd style="color: #000000; font-family: Simsun; line-height: normal; font-size: medium; "><a title="java.io 中的接口">Serializable</a>, <a title="java.lang 中的接口">Cloneable</a>, <a title="java.lang 中的接口">Iterable</a><E>, <a title="java.util 中的接口">Collection</a><E>, <a title="java.util 中的接口">Deque</a><E>, <a title="java.util 中的接口">List</a><E>, <a title="java.util 中的接口">Queue</a><E></dd> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  LinkedList实现了List接口Q允许null元素。此外LinkedList提供额外的getQremoveQinsertҎ在LinkedList的首部或N。这些操作LinkedList可被用作堆栈QstackQ,队列QqueueQ或双向队列QdequeQ?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  注意LinkedList没有同步Ҏ。如果多个线E同时访问一个ListQ则必须自己实现讉K同步。一U解x法是在创建List时构造一个同步的ListQ?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">    List list = Collections.synchronizedList(new LinkedList(...));</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">ArrayListc?/span></div> <div><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><dt style="color: #000000; font-family: Simsun; line-height: normal; font-size: medium; "><strong>所有已实现的接口:</strong></dt><dd style="color: #000000; font-family: Simsun; line-height: normal; font-size: medium; "><a title="java.io 中的接口">Serializable</a>, <a title="java.lang 中的接口">Cloneable</a>, <a title="java.lang 中的接口">Iterable</a><E>, <a title="java.util 中的接口">Collection</a><E>, <a title="java.util 中的接口">List</a><E>, <a title="java.util 中的接口">RandomAccess</a></dd> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  ArrayList实现了可变大的数组。它允许所有元素,包括null。ArrayList没有同步?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">sizeQisEmptyQgetQsetҎq行旉为常数。但是addҎ开销为分摊的常数Q添加n个元素需要O(n)的时间。其他的Ҏq行旉为线性?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  每个ArrayList实例都有一个容量(CapacityQ,即用于存储元素的数组的大。这个容量可随着不断d新元素而自动增加,但是增长法q没有定义。当需要插入大量元素时Q在插入前可以调用ensureCapacityҎ来增加ArrayList的容量以提高插入效率?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  和LinkedList一PArrayList也是非同步的QunsynchronizedQ?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Vector</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">c?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Vector</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">非常cMArrayListQ但?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Vector</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">是同步的。由</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Vector</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">创徏的IteratorQ虽然和ArrayList创徏的Iterator是同一接口Q但是,因ؓ</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Vector</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">是同步的Q当一个Iterator被创且正在被用,另一个线E改变了</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Vector</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">的状态(例如Q添加或删除了一些元素)Q这时调用Iterator的方法时抛出ConcurrentModificationExceptionQ因此必L莯异常?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">Stack c?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  Stackl承?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Vector</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">Q实C个后q先出的堆栈。Stack提供5个额外的Ҏ使得</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Vector</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">得以被当作堆栈用。基本的push和popҎQ还有peekҎ得到栈顶的元素,emptyҎ试堆栈是否为空QsearchҎ一个元素在堆栈中的位置。Stack刚创建后是空栈?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">Set接口</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  Set是一U不包含重复的元素的CollectionQ即L的两个元素e1和e2都有e1.equals(e2)=falseQSet最多有一个null元素?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  很明显,Set的构造函数有一个约束条Ӟ传入的Collection参数不能包含重复的元素?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  h意:必须心操作可变对象QMutable ObjectQ。如果一个Set中的可变元素改变了自w状态导致Object.equals(Object)=true导致一些问题?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">Map接口</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  h意,Map没有l承Collection接口QMap提供key到value的映。一个Map中不能包含相同的keyQ每个key只能映射一个value。Map接口提供3U集合的视图QMap的内容可以被当作一lkey集合Q一lvalue集合Q或者一lkey-value映射?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Hashtable</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">c?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Hashtable</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">l承Map接口Q实C个key-value映射的哈希表。Q何非I(non-nullQ的对象都可作ؓkey或者value?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  d数据使用put(key, value)Q取出数据用get(key)Q这两个基本操作的时间开销为常数?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Hashtable</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">通过initial capacity和load factor两个参数调整性能。通常~省的load factor 0.75较好地实C旉和空间的均衡。增大load factor可以节省I间但相应的查找旉增大,q会影响像get和putq样的操作?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">使用</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Hashtable</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">的简单示例如下,?Q?Q?攑ֈ</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Hashtable</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">中,他们的key分别?#8221;one”Q?#8221;two”Q?#8221;three”Q?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">    </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Hashtable</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "> numbers = new </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Hashtable</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">();</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">    numbers.put(“one”, new Integer(1));</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">    numbers.put(“two”, new Integer(2));</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">    numbers.put(“three”, new Integer(3));</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  要取Z个数Q比?Q用相应的keyQ?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">    Integer n = (Integer)numbers.get(“two”);</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">    System.out.println(“two = ” + n);</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  ׃作ؓkey的对象将通过计算其散列函数来定与之对应的value的位|,因此M作ؓkey的对象都必须实现hashCode和equalsҎ。hashCode和equalsҎl承自根cObjectQ如果你用自定义的类当作key的话Q要相当心Q按照散列函数的定义Q如果两个对象相同,即obj1.equals(obj2)=trueQ则它们的hashCode必须相同Q但如果两个对象不同Q则它们的hashCode不一定不同,如果两个不同对象的hashCode相同Q这U现象称为冲H,冲突会导致操作哈希表的时间开销增大Q所以尽量定义好的hashCode()ҎQ能加快哈希表的操作?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  如果相同的对象有不同的hashCodeQ对哈希表的操作会出现意想不到的l果Q期待的getҎq回nullQ,要避免这U问题,只需要牢C条:要同时复写equalsҎ和hashCodeҎQ而不要只写其中一个?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Hashtable</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">是同步的?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">HashMapc?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  HashMap?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><font size="+0">Hashtable</font></span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">cMQ不同之处在于HashMap是非同步的,q且允许nullQ即null value和null key。,但是HashMap视ؓCollectionӞvalues()Ҏ可返回CollectionQ,其P代子操作旉开销和HashMap的容量成比例。因此,如果q代操作的性能相当重要的话Q不要将HashMap的初始化定w讑־q高Q或者load factorq低?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">WeakHashMapc?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  WeakHashMap是一U改q的HashMapQ它对key实行“弱引?#8221;Q如果一个key不再被外部所引用Q那么该key可以被GC回收?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">ȝ</span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  如果涉及到堆栈,队列{操作,应该考虑用ListQ对于需要快速插入,删除元素Q应该用LinkedListQ如果需要快速随问元素,应该使用ArrayList?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  如果E序在单U程环境中,或者访问仅仅在一个线E中q行Q考虑非同步的c,其效率较高,如果多个U程可能同时操作一个类Q应该用同步的cR?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  要特别注意对哈希表的操作Q作为key的对象要正确复写equals和hashCodeҎ?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; ">  量q回接口而非实际的类型,如返回List而非ArrayListQ这样如果以后需要将ArrayList换成LinkedListӞ客户端代码不用改变。这是针对抽象~程?/span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><br /> </span><span style="color: #5e5e5e; font-family: Verdana, Helvetica, Arial; font-size: 13px; line-height: 19px; "><strong>同步?br /> <font size="+0">Vector</font>是同步的。这个类中的一些方法保证了<font size="+0">Vector</font>中的对象是线E安全的。而ArrayList则是异步的,因此ArrayList中的对象q不是线E安全的。因为同步的要求会媄响执行的效率Q所以如果你不需要线E安全的集合那么使用ArrayList是一个很好的选择Q这样可以避免由于同步带来的不必要的性能开销?br /> 数据增长<br /> 从内部实现机制来讲ArrayList?font size="+0">Vector</font>都是使用数组(Array)来控刉合中的对象。当你向q两U类型中增加元素的时候,如果元素的数目超Z内部数组目前的长度它们都需要扩展内部数l的长度Q?font size="+0">Vector</font>~省情况下自动增长原来一倍的数组长度QArrayList是原来的50%,所以最后你获得的这个集合所占的I间L比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用<font size="+0">Vector</font>有一些优势,因ؓ你可以通过讄集合的初始化大小来避免不必要的资源开销?br /> 使用模式<br /> 在ArrayList?font size="+0">Vector</font>中,从一个指定的位置Q通过索引Q查找数据或是在集合的末֢加、移除一个元素所p的时间是一LQ这个时间我们用O(1)表示。但是,如果在集合的其他位置增加或移除元素那么花费的旉会呈UŞ增长QO(n-i)Q其中n代表集合中元素的个数Qi代表元素增加或移除元素的索引位置。ؓ什么会q样呢?以ؓ在进行上q操作的时候集合中Wi和第i个元素之后的所有元素都要执行位Uȝ操作。这一切意味着什么呢Q?br /> q意味着Q你只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用<font size="+0">Vector</font>或ArrayList都可以。如果是其他操作Q你最好选择其他的集合操作类。比如,LinkList集合cd增加或移除集合中M位置的元素所p的时间都是一L?O(1)Q但它在索引一个元素的使用~比较慢QO(i),其中i是烦引的位置.使用ArrayList也很ҎQ因Z可以单的使用索引来代替创建iterator对象的操作。LinkList也会为每个插入的元素创徏对象Q所有你要明白它也会带来额外的开销?br /> 最后,在《Practical Java》一书中Peter Haggar使用一个简单的数组QArrayQ来代替<font size="+0">Vector</font>或ArrayList。尤其是对于执行效率要求高的E序更应如此。因Z用数l?Array)避免了同步、额外的Ҏ调用和不必要的重新分配空间的操作?/strong></span> </div> <img src ="http://www.aygfsteel.com/xiaoshi/aggbug/342573.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xiaoshi/" target="_blank">石~~</a> 2011-01-08 13:37 <a href="http://www.aygfsteel.com/xiaoshi/archive/2011/01/08/342573.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dhtmlxtree中文文档http://www.aygfsteel.com/xiaoshi/archive/2010/03/12/315265.html石~~石~~Fri, 12 Mar 2010 05:53:00 GMThttp://www.aygfsteel.com/xiaoshi/archive/2010/03/12/315265.htmlhttp://www.aygfsteel.com/xiaoshi/comments/315265.htmlhttp://www.aygfsteel.com/xiaoshi/archive/2010/03/12/315265.html#Feedback0http://www.aygfsteel.com/xiaoshi/comments/commentRss/315265.htmlhttp://www.aygfsteel.com/xiaoshi/services/trackbacks/315265.htmldhtmlxtree中文文档
http://blog.csdn.net/Colin_Bin/archive/2008/10/29/3166205.aspx

石~~ 2010-03-12 13:53 发表评论
]]>iframe 自适应高度宽度 ie7http://www.aygfsteel.com/xiaoshi/archive/2010/03/10/315105.html石~~石~~Wed, 10 Mar 2010 15:32:00 GMThttp://www.aygfsteel.com/xiaoshi/archive/2010/03/10/315105.htmlhttp://www.aygfsteel.com/xiaoshi/comments/315105.htmlhttp://www.aygfsteel.com/xiaoshi/archive/2010/03/10/315105.html#Feedback0http://www.aygfsteel.com/xiaoshi/comments/commentRss/315105.htmlhttp://www.aygfsteel.com/xiaoshi/services/trackbacks/315105.html

function reSetIframe(){

    var iframe = document.getElementById("iframe1");

    try{

        var bHeight = iframe.contentWindow.document.body.scrollHeight;

        var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;


        var bWidth= iframe.contentWindow.document.body.scrollWidth;

        var dWidth=iframe.contentWindow.document.documentElement.scrollWidth;

        var height = Math.max(bHeight, dHeight);

        var width= Math.max(bWidth, dWidth);

        iframe.height =  height;

        iframe.width=width;

    }catch (ex){}

}


<iframe name='iframe1' id='ifrme1' onload="reSetIframe()" frameborder="0" scrolling="no"  src="<%=basePath %>pages/blank.htm"></iframe>


他奶奶的 找了半天 才找?先记?nbsp;





石~~ 2010-03-10 23:32 发表评论
]]>
一个js控g主页http://www.aygfsteel.com/xiaoshi/archive/2009/08/16/291387.html石~~石~~Sun, 16 Aug 2009 14:14:00 GMThttp://www.aygfsteel.com/xiaoshi/archive/2009/08/16/291387.htmlhttp://www.aygfsteel.com/xiaoshi/comments/291387.htmlhttp://www.aygfsteel.com/xiaoshi/archive/2009/08/16/291387.html#Feedback0http://www.aygfsteel.com/xiaoshi/comments/commentRss/291387.htmlhttp://www.aygfsteel.com/xiaoshi/services/trackbacks/291387.htmlhttp://www.open-lib.com/html/index.html
javascript 应用lg的介l?不错



石~~ 2009-08-16 22:14 发表评论
]]>
javascript对象的各U方?/title><link>http://www.aygfsteel.com/xiaoshi/archive/2008/07/28/218046.html</link><dc:creator>石~~</dc:creator><author>石~~</author><pubDate>Mon, 28 Jul 2008 05:56:00 GMT</pubDate><guid>http://www.aygfsteel.com/xiaoshi/archive/2008/07/28/218046.html</guid><wfw:comment>http://www.aygfsteel.com/xiaoshi/comments/218046.html</wfw:comment><comments>http://www.aygfsteel.com/xiaoshi/archive/2008/07/28/218046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xiaoshi/comments/commentRss/218046.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xiaoshi/services/trackbacks/218046.html</trackback:ping><description><![CDATA[function asd(){<br />  this.cc=function(){<br />   alert('ccc');<br />  };<br />  <br />  function privat(){<br />   alert('U有Ҏ');<br />  }<br />  privat();<br />  <br /> };<br /> asd.dd=function(){<br />   alert('dd');<br />  };<br />  asd.prototype={<br />  aa : 'aa',<br />  bb : function(){<br />   alert(this.aa);<br />  }<br />  <br /> };<br /> //asd.prototype.bb();<br /> var sub=new asd();<br /> sub.bb();  // l承的父对象的prototype的方?br /> sub.cc();  // 公有Ҏ<br /> asd.dd();   //静态方?^_^ <img src ="http://www.aygfsteel.com/xiaoshi/aggbug/218046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xiaoshi/" target="_blank">石~~</a> 2008-07-28 13:56 <a href="http://www.aygfsteel.com/xiaoshi/archive/2008/07/28/218046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring拦截器拦截strutshttp://www.aygfsteel.com/xiaoshi/articles/169824.html石~~石~~Sun, 23 Dec 2007 09:26:00 GMThttp://www.aygfsteel.com/xiaoshi/articles/169824.htmlhttp://www.aygfsteel.com/xiaoshi/comments/169824.htmlhttp://www.aygfsteel.com/xiaoshi/articles/169824.html#Feedback0http://www.aygfsteel.com/xiaoshi/comments/commentRss/169824.htmlhttp://www.aygfsteel.com/xiaoshi/services/trackbacks/169824.html
  • 创徏拦截器?
  • 注册拦截器?
  • 声明在何处拦截代码?

  • package ca.nexcel.books.interceptors;
                import org.springframework.aop.MethodBeforeAdvice;
                import java.lang.reflect.Method;
                public class LoggingInterceptor implements MethodBeforeAdvice {
                public void before(Method method, Object[] objects, Object o) throws Throwable {
                System.out.println("logging before!");
                }
                }
                

    q个拦截器非常简单?code>before() Ҏ在拦截点中每个方法之前运行。在本例中,它打印出一句话Q其实它可以做您惛_的Q何事。下一步就是在 Spring 配置文g中注册这个拦截器Q如清单 8 所C:


    清单 8. ?Spring 配置文g中注册拦截器
    <?xml version="1.0" encoding="UTF-8"?>
                <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
                "http://www.springframework.org/dtd/spring-beans.dtd">
                <beans>
                <bean id="bookService" class="ca.nexcel.books.business.BookServiceImpl"/>
                <bean name="/searchSubmit"
                class="ca.nexcel.books.actions.SearchSubmit">
                <property name="bookService">
                <ref bean="bookService"/>
                </property>
                </bean>
                <!--  Interceptors -->
                <bean name="logger"
                class="ca.nexcel.books.interceptors.LoggingInterceptor"/> |(1)
                <!-- AutoProxies -->
                <bean name="loggingAutoProxy"
                class="org.springframework.aop.framework.autoproxy.
                BeanNameAutoProxyCreator"> |(2)
                <property name="beanNames">
                <value>/searchSubmit</valuesgt; |(3)
                </property>
                <property name="interceptorNames">
                <list>
                <value>logger</value> |(4)
                </list>
                </property>
                </bean>
                </beans>
                

    您可能已l注意到了,清单 8 扩展?清单 6 中所C的应用E序以包含一个拦截器。具体细节如下:

    • ?(1) 处,我注册了q个拦截器?
    • ?(2) 处,我创Z一?bean 名称自动代理Q它描述如何应用拦截器。还有其他的Ҏ定义拦截点,但是q种Ҏ常见而简ѝ?
    • ?(3) 处,我将 Struts 动作注册为将被拦截的 bean。如果您惌拦截其他?Struts 动作Q则只需要在 "beanNames" 下面创徏附加?<value> 标记?
    • ?(4) 处,当拦截发生时Q我执行了在 (1) 处创建的拦截?bean 的名U。这里列出的所有拦截器都应用于“beanNames”?


    石~~ 2007-12-23 17:26 发表评论
    ]]>
    HashMap 遍历http://www.aygfsteel.com/xiaoshi/articles/169709.html石~~石~~Sun, 23 Dec 2007 02:08:00 GMThttp://www.aygfsteel.com/xiaoshi/articles/169709.htmlhttp://www.aygfsteel.com/xiaoshi/comments/169709.htmlhttp://www.aygfsteel.com/xiaoshi/articles/169709.html#Feedback0http://www.aygfsteel.com/xiaoshi/comments/commentRss/169709.htmlhttp://www.aygfsteel.com/xiaoshi/services/trackbacks/169709.html 
     
    发现HashMap 用到下面的格?Q直接@环遍历整个hashMap  hashTable
     
    q回?set 中的每个元素都是一?Map.Entry cd?/div>
     
    private Hashtable<String, String> emails = new Hashtable<String, String>();
     
    //      Ҏ一: 用entrySet()
    //  Iterator it = emails.entrySet().iterator();
    //  while(it.hasNext()){
    //   Map.Entry m=(Map.Entry)it.next();
    //   logger.info("email-" + m.getKey() + ":" + m.getValue());
    //  }
     
      // Ҏ二:直接再@环中
      for (Map.Entry<String, String> m : emails.entrySet()) {
      
       logger.info("email-" + m.getKey() + ":" + m.getValue());
      }
     
      // Ҏ三:用keySet()
      Iterator it = emails.keySet().iterator();
      while (it.hasNext()){
       String key;
       key=(String)it.next();
       logger.info("email-" + key + ":" + emails.get(key));
      }
     
     
     
    另外 我们可以先把hashMap 转ؓ集合CollectionQ再q代输出Q不q得到的对象
     
      Map   aa   =   new   HashMap();  
      aa.put("tmp1",   new   Object());     //q加     替换用同L函数.  
      aa.remove("temp1");                       //删除  
      for   (Iterator   i   =   aa.values().iterator();   i.hasNext();   )   {  
              Object   temp   =   i.next();  
      }         //遍历  
     
     
     
     


    石~~ 2007-12-23 10:08 发表评论
    ]]>DetachedCriteria 用法 Q{载)http://www.aygfsteel.com/xiaoshi/archive/2007/12/23/169707.html石~~石~~Sun, 23 Dec 2007 02:02:00 GMThttp://www.aygfsteel.com/xiaoshi/archive/2007/12/23/169707.htmlhttp://www.aygfsteel.com/xiaoshi/comments/169707.htmlhttp://www.aygfsteel.com/xiaoshi/archive/2007/12/23/169707.html#Feedback0http://www.aygfsteel.com/xiaoshi/comments/commentRss/169707.htmlhttp://www.aygfsteel.com/xiaoshi/services/trackbacks/169707.html
    如果每个女都有自己的客戯源(不要x了!Q,那么需要查询拥有客户Gates的美x么办?
     
    使用Criteria可以有两U方法:
     
    1Q?br /> DetachedCriteria beautyCriteria = DetachedCriteria.forClass(Beauty.class).createCriteria("customers");
    beautyCriteria.add(Restrictions.eq("name", "Gates")):
     
    2Q?br /> DetachedCriteria beautyCriteria = DetachedCriteria.forClass(Beauty.class).createAlias("customers", "c");
    beautyCriteria.add(Restrictions.eq("c.name", "Gates")):
     
    接着有了新的要求Q年U太大的女不要Q还是查找拥有客户Gates的,条g如下Q?br /> DetachedCriteria beautyCriteria = DetachedCriteria.forClass(Beauty.class, "b").;
    DetachedCriteria customerCriteria = beautyCriteria.createAlias("customers", c");
    beautyCriteria.add(Restrictions.le("b.age", new Long(20))):
    customerCriteria.add(Restrictions.eq("c.name", "Gates")):
     
    ----------------------------------------------------------------------------------------------
     
    <prop key="hibernate.hbm2ddl.auto">update</prop>
     
    其中update表示加蝲hibernate自动更新数据库结构,你也可以用create,但这样你数据库中的所有数据都会被清除Q估计你现在写的是none,所以不会自动生?nbsp;


    石~~ 2007-12-23 10:02 发表评论
    ]]>转蝲 我的struts2配置Q间接实现零配置 http://www.aygfsteel.com/xiaoshi/articles/160625.html石~~石~~Wed, 14 Nov 2007 12:50:00 GMThttp://www.aygfsteel.com/xiaoshi/articles/160625.htmlhttp://www.aygfsteel.com/xiaoshi/comments/160625.htmlhttp://www.aygfsteel.com/xiaoshi/articles/160625.html#Feedback0http://www.aygfsteel.com/xiaoshi/comments/commentRss/160625.htmlhttp://www.aygfsteel.com/xiaoshi/services/trackbacks/160625.html所谓间接实现零配置Q是指只要做些初始化的配|之后,在以后的开发中基本上不用再Ҏ个Action做配|?

    struts.xmlq样配置

    代码
    1. <action name="*/*" method="{2}" class="workbench.web.actions.{1}Action">  
    2.    <result name="custom">/view/{1}/${target}.jsp</result>  
    3. </action>  

     

    struts.properties的配|:

    代码
    1. struts.objectFactory = spring   
    2. struts.objectFactory.spring.autoWire = name   
    3. struts.devMode = true  
    4. struts.enable.DynamicMethodInvocation = false  
    5. struts.action.extension =    
    6. struts.enable.SlashesInActionNames = true  

     

    然后写一个BaseAction:

    代码
    1. public abstract class BaseAction {   
    2.     protected final String CUSTOM = "custom";   
    3.     private String target;   
    4.     protected final Log logger = LogFactory.getLog(getClass());   
    5.     public String getTarget() {   
    6.         return target;   
    7.     }   
    8.     public void setTarget(String target) {   
    9.         this.target = target;   
    10.     }   
    11.        
    12.     protected String render(String _target){   
    13.         setTarget(_target);   
    14.         return CUSTOM;   
    15.     }   
    16. }  

     

    q样其余的Action都可以直接承BaseActionQ不用再做Q何配|?
    通过return render(target)转发到指定的jsp面,从而间接实现零配置

    代码
    1. public class UserAction extends BaseAction{   
    2.     private User user;   
    3.     private UserService userService;   
    4.     public void setUserService(UserService userService) {   
    5.         this.userService = userService;   
    6.     }   
    7.        
    8.     public User getUser() {   
    9.         return user;   
    10.     }   
    11.     public void setUser(User user) {   
    12.         this.user = user;   
    13.     }   
    14.     public String test(){   
    15.         user = userService.get(1l);   
    16.         return render("test");   
    17.     }   
    18. }  


    石~~ 2007-11-14 20:50 发表评论
    ]]>
    վ֩ģ壺 | ǿ| ƽң| ٲ| | | ߰| | | | ɽ| | | | ҵ| | | | բ| | ϻ| Т| | | | | | | | | ̶| | | | | ̨| | Ž| | ɽ| |