??xml version="1.0" encoding="utf-8" standalone="yes"?>成人在线免费看,国产精品亚洲不卡a,911亚洲精品 http://www.aygfsteel.com/supersalor/category/41094.htmljava struts1、struts2 spring hibernate freemarker ajax fckeditor Mysql MSSQL ORACLE DB2 Websphere jboss zh-cn Wed, 29 Jul 2009 14:55:22 GMT Wed, 29 Jul 2009 14:55:22 GMT 60 java的Collection和Map详解 http://www.aygfsteel.com/supersalor/articles/288970.html李峰 李峰 Wed, 29 Jul 2009 14:24:00 GMT http://www.aygfsteel.com/supersalor/articles/288970.html http://www.aygfsteel.com/supersalor/comments/288970.html http://www.aygfsteel.com/supersalor/articles/288970.html#Feedback 0 http://www.aygfsteel.com/supersalor/comments/commentRss/288970.html http://www.aygfsteel.com/supersalor/services/trackbacks/288970.html
Collection与Map的类l承囑֦下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set HashSet TreeSet Map ├Hashtable ├HashMap └WeakHashMap Collection接口 Collection是最基本的集合接口,一个Collection代表一lObjectQ即Collection的元素(ElementsQ。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接承自Collection的类QJava SDK提供的类都是l承自Collection的“子接口”如List和Set。? 所有实现Collection接口的类都必L供两个标准的构造函敎ͼ无参数的构造函数用于创Z个空的CollectionQ有一个Collection参数的构造函数用于创Z个新的CollectionQ这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。? 如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个P代子Q用该q代子即可逐一讉KCollection中每一个元素。典型的用法如下Q? Iterator it = collection.iterator(); // 获得一个P代子 while(it.hasNext()) { Object obj = it.next(); // 得到下一个元素? } 由Collection接口z的两个接口是List和Set。? List接口 List是有序的CollectionQ用此接口能够_的控制每个元素插入的位置。用戯够用烦引(元素在List中的位置Q类g数组下标Q来讉KList中的元素Q这cM于Java的数l。? 和下面要提到的Set不同QList允许有相同的元素。? 除了hCollection接口必备的iterator()Ҏ外,Listq提供一个listIterator()ҎQ返回一个ListIterator接口Q和标准的Iterator接口相比QListIterator多了一些add()之类的方法,允许dQ删除,讑֮元素Q还能向前或向后遍历。? 实现List接口的常用类有LinkedListQArrayListQVector和Stack。? LinkedListc? LinkedList实现了List接口Q允许null元素。此外LinkedList提供额外的getQremoveQinsertҎ在LinkedList的首部或N。这些操作LinkedList可被用作堆栈QstackQ,队列QqueueQ或双向队列QdequeQ。? 注意LinkedList没有同步Ҏ。如果多个线E同时访问一个ListQ则必须自己实现讉K同步。一U解x法是在创建List时构造一个同步的ListQ? List list = Collections.synchronizedList(new LinkedList(...)); ArrayListc? ArrayList实现了可变大的数组。它允许所有元素,包括null。ArrayList没有同步。? sizeQisEmptyQgetQsetҎq行旉为常数。但是addҎ开销为分摊的常数Q添加n个元素需要O(n)的时间。其他的Ҏq行旉为线性。? 每个ArrayList实例都有一个容量(CapacityQ,即用于存储元素的数组的大。这个容量可随着不断d新元素而自动增加,但是增长法q没有定义。当需要插入大量元素时Q在插入前可以调用ensureCapacityҎ来增加ArrayList的容量以提高插入效率。? 和LinkedList一PArrayList也是非同步的QunsynchronizedQ。? Vectorc? Vector非常cMArrayListQ但是Vector是同步的。由Vector创徏的IteratorQ虽然和ArrayList创徏的Iterator是同一接口Q但是,因ؓVector是同步的Q当一个Iterator被创且正在被用,另一个线E改变了Vector的状态(例如Q添加或删除了一些元素)Q这时调用Iterator的方法时抛出ConcurrentModificationExceptionQ因此必L莯异常。? Stack c? Stackl承自VectorQ实C个后q先出的堆栈。Stack提供5个额外的Ҏ使得Vector得以被当作堆栈用。基本的push和popҎQ还有peekҎ得到栈顶的元素,emptyҎ试堆栈是否为空QsearchҎ一个元素在堆栈中的位置。Stack刚创建后是空栈。? Set接口 Set是一U不包含重复的元素的CollectionQ即L的两个元素e1和e2都有e1.equals(e2)=falseQSet最多有一个null元素。? 很明显,Set的构造函数有一个约束条Ӟ传入的Collection参数不能包含重复的元素。? h意:必须心操作可变对象QMutable ObjectQ。如果一个Set中的可变元素改变了自w状态导致Object.equals(Object)=true导致一些问题。 ?br /> HashSet 是哈希表实现?HashSet中的数据是无序的Q可以放入nullQ但只能攑օ一个nullQ两者中的值都不能重复Q就如数据库中唯一U束 ,同时 QHashSet要求攑օ的对象必d现HashCode()ҎQ放入的对象Q是以hashcode码作为标识的Q而具有相同内容的String对象Qhashcode是一P所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例?br /> TreeSet 是二差树实现?Treeset中的数据是自动排好序的,不允许放入null倹{排序主要通过 重写ComparatorҎ或者实现Comparable接口 a. Comparator可以在创建TreeMap时指?br /> b. 如果创徏时没有确?那么׃使用key.compareTo()Ҏ,q就要求key必须实现Comparable接口. Map接口 h意,Map没有l承Collection接口QMap提供key到value的映。一个Map中不能包含相同的keyQ每个key只能映射一个value。Map接口提供3U集合的视图QMap的内容可以被当作一lkey集合Q一lvalue集合Q或者一lkey-value映射。? Hashtablec? Hashtablel承Map接口Q实C个key-value映射的哈希表。Q何非I(non-nullQ的对象都可作ؓkey或者value。? d数据使用put(key, value)Q取出数据用get(key)Q这两个基本操作的时间开销为常数。? Hashtable通过initial capacity和load factor两个参数调整性能。通常~省的load factor 0.75较好地实C旉和空间的均衡。增大load factor可以节省I间但相应的查找旉增大,q会影响像get和putq样的操作。? 使用Hashtable的简单示例如下,?Q?Q?攑ֈHashtable中,他们的key分别是”one”,”two”,”three”: Hashtable numbers = new Hashtable(); numbers.put(“one? new Integer(1)); numbers.put(“two? new Integer(2)); numbers.put(“three? new Integer(3)); 要取Z个数Q比?Q用相应的keyQ? Integer n = (Integer)numbers.get(“two?; System.out.println(“two = ”?+ n); ׃作ؓ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能加快哈希表的操作。? 如果相同的对象有不同的hashCodeQ对哈希表的操作会出现意想不到的l果Q期待的getҎq回nullQ,要避免这U问题,只需要牢C条:要同时复写equalsҎ和hashCodeҎQ而不要只写其中一个。? Hashtable是同步的。? HashMapc? HashMap和HashtablecMQ不同之处在于HashMap是非同步的,q且允许nullQ即null value和null key。,但是HashMap视ؓCollectionӞvalues()Ҏ可返回CollectionQ,其P代子操作旉开销和HashMap的容量成比例。因此,如果q代操作的性能相当重要的话Q不要将HashMap的初始化定w讑־q高Q或者load factorq低。? WeakHashMapc? WeakHashMap是一U改q的HashMapQ它对key实行“弱引用”,如果一个key不再被外部所引用Q那么该key可以被GC回收。? ȝ 如果涉及到堆栈,队列{操作,应该考虑用ListQ对于需要快速插入,删除元素Q应该用LinkedListQ如果需要快速随问元素,应该使用ArrayList?/p>
文章出处Q?a >http://www.diybl.com/course/3_program/java/javajs/2007917/71621.html
]]> java中集?Collection cd?ȝ http://www.aygfsteel.com/supersalor/articles/288969.html李峰 李峰 Wed, 29 Jul 2009 14:10:00 GMT http://www.aygfsteel.com/supersalor/articles/288969.html http://www.aygfsteel.com/supersalor/comments/288969.html http://www.aygfsteel.com/supersalor/articles/288969.html#Feedback 0 http://www.aygfsteel.com/supersalor/comments/commentRss/288969.html http://www.aygfsteel.com/supersalor/services/trackbacks/288969.html java中有?font color="#ffffff">java . util.Collections集合c,
public class Collections extends java .util.Collections 中有很多有用的方法:排序Q排,反{Q替换,拯Q返回最元素,q回最大元素等{?br />2.具体操作Q?br /> 1) 排序(Sort) 使用sortҎ可以Ҏ元素的自焉?Ҏ定列表按升序q行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必须是用指定比较器可相互比较的 double array[] = {112, 111, 23, 456, 231 }; for (int i = 0; i < array.length; i++) { list.add(new Double(array[i])); } Collections.sort(list); for (int i = 0; i < array.length; i++) { System.out.println(li.get(i)); } //l果Q?12,111,23,456,231 2) hQShufflingQ? h法所做的正好?sort 相反: 它打乱在一?List 中可能有的Q何排列的t迹。也是_Z随机源的输入重排?List, q样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰q气的游戏中是非常有用的。例如,它可被用来排代表一副牌?Card 对象的一?List 。另外,在生成测试案例时Q它也是十分有用的? Collections.Shuffling(list) double array[] = {112, 111, 23, 456, 231 }; for (int i = 0; i < array.length; i++) { list.add(new Double(array[i])); } Collections.shuffle(list); for (int i = 0; i < array.length; i++) { System.out.println(li.get(i)); } //l果Q?12,111,23,456,231 3) 反{(Reverse) 使用ReverseҎ可以Ҏ元素的自焉?Ҏ定列表按降序q行? 序? Collections.reverse(list) double array[] = {112, 111, 23, 456, 231 }; for (int i = 0; i < array.length; i++) { list.add(new Double(array[i])); } Collections. reverse (list); for (int i = 0; i < array.length; i++) { System.out.println(li.get(i)); } //l果Q?31,456,23,111,112 4) 替换所以的元素(Fill) 使用指定元素替换指定列表中的所有元素? String str[] = {"dd","aa","bb","cc","ee"}; for(int j=0;j<str.length;j++){ li.add(new String(str[j])); } Collections.fill(li,"aaa"); for (int i = 0; i < li.size(); i++) { System.out.println("list[" + i + "]=" + li.get(i)); } //l果Qaaa,aaa,aaa,aaa,aaa 5) 拯(Copy) 用两个参敎ͼ一个目?List 和一个源 List, 源的元素拷贝到目标Qƈ覆盖它的内容。目?List 臛_与源一样长。如果它更长Q则在目?List 中的剩余元素不受影响? Collections.copy(list,li): 后面一个参数是目标列表 ,前一个是源列? double array[] = {112, 111, 23, 456, 231 }; List list = new ArrayList(); List li = new ArrayList(); for (int i = 0; i < array.length; i++) { list.add(new Double(array[i])); } double arr[] = {1131,333}; String str[] = {"dd","aa","bb","cc","ee"}; for(int j=0;j<arr.length;j++){ li.add(new Double(arr[j])); } Collections.copy(list,li); for (int i = 0; i <list.size(); i++) { System.out.println("list[" + i + "]=" + list.get(i)); } //l果Q?131,333,23,456,231 6) q回Collections中最元?min) Ҏ指定比较器生的序Q返回给?collection 的最元素?span class="hilite2">collection 中的所有元素都必须是通过指定比较器可怺比较? Collections.min(list) double array[] = {112, 111, 23, 456, 231 }; List list = new ArrayList(); for (int i = 0; i < array.length; i++) { list.add(new Double(array[i])); } Collections.min(list); for (int i = 0; i <list.size(); i++) { System.out.println("list[" + i + "]=" + list.get(i)); } //l果Q?3 7) q回Collections中最元?max) Ҏ指定比较器生的序Q返回给?collection 的最大元素?span class="hilite2">collection 中的所有元素都必须是通过指定比较器可怺比较? Collections.max(list) double array[] = {112, 111, 23, 456, 231 }; List list = new ArrayList(); for (int i = 0; i < array.length; i++) { list.add(new Double(array[i])); } Collections.max(list); for (int i = 0; i <list.size(); i++) { System.out.println("list[" + i + "]=" + list.get(i)); } //l果Q?56
]]>J2SE 5.0新特性(转) http://www.aygfsteel.com/supersalor/articles/288961.html李峰 李峰 Wed, 29 Jul 2009 13:52:00 GMT http://www.aygfsteel.com/supersalor/articles/288961.html http://www.aygfsteel.com/supersalor/comments/288961.html http://www.aygfsteel.com/supersalor/articles/288961.html#Feedback 0 http://www.aygfsteel.com/supersalor/comments/commentRss/288961.html http://www.aygfsteel.com/supersalor/services/trackbacks/288961.html
J2SE 5.0新特性(转)
J2SE 5.0 (Tiger)的发布是Java语言发展史上的一个重要的里程? 是迄今ؓ止在 Java ~程斚w所取得的最大进? J2SE 5.0提供了很多o人激动的Ҏ?q些Ҏ包括范?generics)的支? 枚Dcd(enumeration)的支? 元数?metadata)的支? 自动拆箱(unboxing)/装箱(autoboxing), 可变个数参数(varargs), 静态导?static imports), 以及新的U程架构(Thread framework). 用Java用了半年了,J2SE 5.0的新Ҏ竟然了解甚,下面q些文章详细介绍了J2SE 5.0的新Ҏ,敬请参?
?Eclipse 3.1 中体?J2SE 5.0 的新Ҏ? W一部分 Q枚丄?/font>
?Eclipse 3.1 中体?J2SE 5.0 的新Ҏ? W二部分 Q注释类?/font>
?Eclipse 3.1 中体?J2SE 5.0 的新Ҏ? W三部分 Q范?/font>
Experiences with the New Java 5 Language Features
SUN-DOC: Enhancements in JDK 5
]]>
վ֩ģ壺
е |
̶ |
|
ƽԭ |
« |
Ǩ |
ɽ |
|
˫ |
³ľ |
|
|
|
|
|
ӱ |
ˮ |
|
|
|
ɽ |
|
쳤 |
|
̩ |
|
ŷ |
żҸ |
ˮ |
°Ͷ |
ݰ |
|
|
|
|
½ |
˶ |
» |
|
|
̨ |