??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-cnWed, 29 Jul 2009 14:55:22 GMTWed, 29 Jul 2009 14:55:22 GMT60java的Collection和Map详解http://www.aygfsteel.com/supersalor/articles/288970.html李峰李峰Wed, 29 Jul 2009 14:24:00 GMThttp://www.aygfsteel.com/supersalor/articles/288970.htmlhttp://www.aygfsteel.com/supersalor/comments/288970.htmlhttp://www.aygfsteel.com/supersalor/articles/288970.html#Feedback0http://www.aygfsteel.com/supersalor/comments/commentRss/288970.htmlhttp://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



李峰 2009-07-29 22:24 发表评论
]]>
java中集?Collection cd?ȝhttp://www.aygfsteel.com/supersalor/articles/288969.html李峰李峰Wed, 29 Jul 2009 14:10:00 GMThttp://www.aygfsteel.com/supersalor/articles/288969.htmlhttp://www.aygfsteel.com/supersalor/comments/288969.htmlhttp://www.aygfsteel.com/supersalor/articles/288969.html#Feedback0http://www.aygfsteel.com/supersalor/comments/commentRss/288969.htmlhttp://www.aygfsteel.com/supersalor/services/trackbacks/288969.htmljava中有?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 
          



李峰 2009-07-29 22:10 发表评论
]]>J2SE 5.0新特性(转)http://www.aygfsteel.com/supersalor/articles/288961.html李峰李峰Wed, 29 Jul 2009 13:52:00 GMThttp://www.aygfsteel.com/supersalor/articles/288961.htmlhttp://www.aygfsteel.com/supersalor/comments/288961.htmlhttp://www.aygfsteel.com/supersalor/articles/288961.html#Feedback0http://www.aygfsteel.com/supersalor/comments/commentRss/288961.htmlhttp://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


李峰 2009-07-29 21:52 发表评论
]]>
վ֩ģ壺 е| ̶| | ƽԭ| «| Ǩ| ɽ| | ˫| ³ľ| | | | | | ӱ| ˮ| | | | ɽ| | | | ̩| | ŷ| żҸ| ˮ| °Ͷ| ݰ| | | | | ½| ˶| »| | | ̨|