<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ……天天向上

    好的想法總是無窮無盡

    統計

    留言簿(1)

    閱讀排行榜

    評論排行榜

    2012年9月5日 #

    calendar獲取當前日期及時間的用例

    1. import Java.util.*;
    2.   public class ShowDate {
    3.   public static void main(String[] args) {
    4.   Calendar calendar = new GregorianCalendar();
    5.   Date trialTime = new Date();
    6.   calendar.setTime(trialTime);
    7.   // print out a bunch of interesting things
    8.   System.out.println("ERA: " + calendar.get(Calendar.ERA));
    9.   System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
    10.   System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
    11.   System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
    12.   System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
    13.   System.out.println("DATE: " + calendar.get(Calendar.DATE));
    14.   System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
    15.   System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
    16.   System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
    17.   System.out.println("DAY_OF_WEEK_IN_MONTH: " + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
    18.   System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
    19.   System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
    20.   System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
    21.   System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
    22.   System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
    23.   System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
    24.   System.out.println("ZONE_OFFSET: " + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
    25.   System.out.println("DST_OFFSET: " + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));
    26.   System.out.println("Current Time, with hour reset to 3");
    27.   calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
    28.   calendar.set(Calendar.HOUR, 3);
    29.   System.out.println("ERA: " + calendar.get(Calendar.ERA));
    30.   System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
    31.   System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
    32.   System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
    33.   System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
    34.   System.out.println("DATE: " + calendar.get(Calendar.DATE));
    35.   System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
    36.   System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
    37.   System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
    38.   System.out.println("DAY_OF_WEEK_IN_MONTH: " + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));

    posted @ 2012-09-19 09:51 japper 閱讀(6350) | 評論 (0)編輯 收藏

    Android SDK下載和更新失敗的解決方法


    Android SDK下載和更新失敗的解決方法

     

    最近剛換了電腦,開始搭建Android開發環境的時候,下載SDK總是會出現如下錯誤:
     
    1.Failed to fetch URL http://dl-ssl.google.com/Android/repository/addons_list-1.xml
    據說dl-ssl.google.com在大陸被強了,偉大的天朝真是不讓人活了,解決方法就是修改C:\Windows\System32\drivers\etc\hosts文件。添加一行:
     
    1.74.125.237.1       dl-ssl.google.com 
    這里需要注意的是hosts文件是只讀的,我們沒有權限修改,需要我們將hosts文件復制到桌面或者其他地方,然后修改,代碼如下:
    1.# Copyright (c) 1993-2009 Microsoft Corp. 
    2.# 
    3.# This is a sample HOSTS file used by Microsoft TCP/IP for Windows. 
    4.# 
    5.# This file contains the mappings of IP addresses to host names. Each 
    6.# entry should be kept on an individual line. The IP address should 
    7.# be placed in the first column followed by the corresponding host name. 
    8.# The IP address and the host name should be separated by at least one 
    9.# space. 
    10.# 
    11.# Additionally, comments (such as these) may be inserted on individual 
    12.# lines or following the machine name denoted by a '#' symbol. 
    13.# 
    14.# For example: 
    15.# 
    16.#      102.54.94.97     rhino.acme.com          # source server 
    17.#       38.25.63.10     x.acme.com              # x client host 
    18. 
    19.# localhost name resolution is handled within DNS itself. 
    20.#   127.0.0.1       localhost 
    21.#   ::1             localhost 
    22.//親,就是增加這一句哦  
    23.74.125.237.1       dl-ssl.google.com 
    然后保存,復制修改后的hosts文件到C:\Windows\System32\drivers\etc 目錄,替換文件就好!!!我們再次下載SDK的時候就會成功啦,如下圖:
     


    嘿嘿,大功告成啦!!!
     
    PS:補充下,在mac或Linux中,hosts文件所在位置為/etc/hosts,可以使用sudo vim /etc/hosts來編輯。

    posted @ 2012-09-10 11:18 japper 閱讀(346) | 評論 (0)編輯 收藏

    免安裝版Tomcat 6.0.35碰到的問題 :打開tomcat管理界面時,用戶名和密碼錯誤的設置方法

    Tomcat 6.0.35 的功能有些不同于Tomcat 6.0.20。我下載的Tomcat 6.0.35是免安裝的,而以前使用的Tomcat 6.0.20是需要安裝的,而且Tomcat 6.0.20 的安裝密碼,即進入Tomcat Manager 這個地方的密碼是在安裝的時候指定的,但是呢,Tomcat 6.0.35 由于是免安裝的,所以就沒有地方去指定密碼了,當我們訪問Tomcat 6.0.35 的Tomcat Manager的時候 ,輸入以前默認的用戶名:admin 密碼為空,會發現出現了403 錯誤,即access deny 。調試了好久,最后終于找出原因了。根據403頁面的提示,需要在tomcat的配置文件中(即conf/tomcat-users.xml)加入

    <role rolename="manager-gui"/>

    <user username="admin" password="" roles="manager-gui"/>

    有一點必須注意,其中的rolename 必須是“manager-gui” ,更改成admin 或者 admin-gui,都不好用,而下面的username  password是可以任意的,但是后面的roles 必須和上面role 中的rolename相同。

    posted @ 2012-09-05 14:22 japper 閱讀(3833) | 評論 (0)編輯 收藏

    通過 jconsole查看tomcat運行情況的配置方法

    通過 jconsole查看tomcat運行情況的配置方法

    ——基于JDK1.5LinuxRedhat5.5)、Tomcat6

    由于項目的原因,需要使用jconsoletomcat進行遠程監控,結合網上的資料對配置方法進行了總結。

    第一步、配置tomcat

    打開%TOMCAT_HOME%/bin下的文件catalina.sh搜索“JAVA_OPTS”找到下面這行:

    if [ -z "$LOGGING_MANAGER" ]; then

      JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

    else

      JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER"

    fi 

    在每個“JAVA_OPTS”后邊都添加以下標黃代碼段,且在一行顯示

    if [ -z "$LOGGING_MANAGER" ]; then

      JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.rmi.server.hostname=192.9.100.48  -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false""

    else 

      JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER -Djava.rmi.server.hostname=192.9.100.48  -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="9004" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false""

    fi

    其中-Djava.rmi.server.hostname項必須設置,否則遠程連接會因為解析到127.0.0.1失敗,該項的值就是你在windows客戶端連接linux時的ip地址

    -Dcom.sun.management.jmxremote.port="9004"項設置遠程連接端口,不要與其他應用沖突

    sslauthenticate設置為false,如果需要安全,請不要false

    、重啟tomcat

    使用root身份登錄系統,進入%TOMCAT_HOME%/bin目錄下:

    [root@test ~]#ps ef |grep tomcat -輸入命令查看是否存在tomcat進程

    [root@test ~]#./shutdown.sh--停止tomcat服務,如果無效使用kill命令殺掉進程

    [root@test ~]#./startup.sh  --啟動tomcat服務

    、運行jconsole

    進入JDK安裝目錄%JDK_HOME%/bin下,找到“jconsole.exe”,點擊運行并選擇【遠程】選項卡:

    在【主機名或ip】輸入要遠程監控的tomcat服務器地址

    在【端口】輸入上文設置的端口號:9004

    【用戶名、口令】為空,點擊【連接】進入監控界面。

    posted @ 2012-09-05 14:16 japper 閱讀(3957) | 評論 (0)編輯 收藏

    TOMCAT獲取信息:JMXServiceURL 、JMXConnector 和MBeanServerConnection

    1. import java.lang.management.MemoryUsage;
    2. import java.text.SimpleDateFormat;
    3. import java.util.Date;
    4. import java.util.Formatter;
    5. import java.util.HashMap;
    6. import java.util.Iterator;
    7. import java.util.Map;
    8. import java.util.Set;
    9. import javax.management.MBeanAttributeInfo;
    10. import javax.management.MBeanInfo;
    11. import javax.management.MBeanServerConnection;
    12. import javax.management.ObjectInstance;
    13. import javax.management.ObjectName;
    14. import javax.management.openmbean.CompositeDataSupport;
    15. import javax.management.remote.JMXConnector;
    16. import javax.management.remote.JMXConnectorFactory;
    17. import javax.management.remote.JMXServiceURL;
    18. public class test {
    19. /**
    20. * @param args
    21. */
    22. public static void main(String[] args) {
    23. try {
    24. String jmxURL = "service:jmx:rmi:///jndi/rmi://192.168.1.126:10090/jmxrmi";//tomcat jmx url
    25. JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);
    26. Map map = new HashMap();
    27. String[] credentials = new String[] { "monitorRole", "QED" };
    28. map.put("jmx.remote.credentials", credentials);
    29. JMXConnector connector = JMXConnectorFactory.connect(serviceURL, map);
    30. MBeanServerConnection mbsc = connector.getMBeanServerConnection();
    31. //端口最好是動態取得
    32. ObjectName threadObjName = new ObjectName("Catalina:type=ThreadPool,name=http-8089");
    33. MBeanInfo mbInfo = mbsc.getMBeanInfo(threadObjName);
    34. String attrName = "currentThreadCount";//tomcat的線程數對應的屬性值
    35. MBeanAttributeInfo[] mbAttributes = mbInfo.getAttributes();
    36. System.out.println("currentThreadCount:" + mbsc.getAttribute(threadObjName, attrName));
    37. //heap
    38. for (int j = 0; j < mbsc.getDomains().length; j++) {
    39. System.out.println("###########" + mbsc.getDomains()[j]);
    40. }
    41. Set MBeanset = mbsc.queryMBeans(null, null);
    42. System.out.println("MBeanset.size() : " + MBeanset.size());
    43. Iterator MBeansetIterator = MBeanset.iterator();
    44. while (MBeansetIterator.hasNext()) {
    45. ObjectInstance objectInstance = (ObjectInstance) MBeansetIterator.next();
    46. ObjectName objectName = objectInstance.getObjectName();
    47. String canonicalName = objectName.getCanonicalName();
    48. System.out.println("canonicalName : " + canonicalName);
    49. if (canonicalName.equals("Catalina:host=localhost,type=Cluster")) {
    50. // Get details of cluster MBeans
    51. System.out.println("Cluster MBeans Details:");
    52. System.out.println("=========================================");
    53. //getMBeansDetails(canonicalName);
    54. String canonicalKeyPropList = objectName.getCanonicalKeyPropertyListString();
    55. }
    56. }
    57. //------------------------- system ----------------------
    58. ObjectName runtimeObjName = new ObjectName("java.lang:type=Runtime");
    59. System.out.println("廠商:" + (String) mbsc.getAttribute(runtimeObjName, "VmVendor"));
    60. System.out.println("程序:" + (String) mbsc.getAttribute(runtimeObjName, "VmName"));
    61. System.out.println("版本:" + (String) mbsc.getAttribute(runtimeObjName, "VmVersion"));
    62. Date starttime = new Date((Long) mbsc.getAttribute(runtimeObjName, "StartTime"));
    63. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    64. System.out.println("啟動時間:" + df.format(starttime));
    65. Long timespan = (Long) mbsc.getAttribute(runtimeObjName, "Uptime");
    66. System.out.println("連續工作時間:" + test.formatTimeSpan(timespan));
    67. //------------------------ JVM -------------------------
    68. //堆使用率
    69. ObjectName heapObjName = new ObjectName("java.lang:type=Memory");
    70. MemoryUsage heapMemoryUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(heapObjName,
    71. "HeapMemoryUsage"));
    72. long maxMemory = heapMemoryUsage.getMax();//堆最大
    73. long commitMemory = heapMemoryUsage.getCommitted();//堆當前分配
    74. long usedMemory = heapMemoryUsage.getUsed();
    75. System.out.println("heap:" + (double) usedMemory * 100 / commitMemory + "%");//堆使用率
    76. MemoryUsage nonheapMemoryUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(heapObjName,
    77. "NonHeapMemoryUsage"));
    78. long noncommitMemory = nonheapMemoryUsage.getCommitted();
    79. long nonusedMemory = heapMemoryUsage.getUsed();
    80. System.out.println("nonheap:" + (double) nonusedMemory * 100 / noncommitMemory + "%");
    81. ObjectName permObjName = new ObjectName("java.lang:type=MemoryPool,name=Perm Gen");
    82. MemoryUsage permGenUsage = MemoryUsage.from((CompositeDataSupport) mbsc.getAttribute(permObjName, "Usage"));
    83. long committed = permGenUsage.getCommitted();//持久堆大小
    84. long used = heapMemoryUsage.getUsed();//
    85. System.out.println("perm gen:" + (double) used * 100 / committed + "%");//持久堆使用率
    86. //-------------------- Session ---------------
    87. ObjectName managerObjName = new ObjectName("Catalina:type=Manager,*");
    88. Set<ObjectName> s = mbsc.queryNames(managerObjName, null);
    89. for (ObjectName obj : s) {
    90. System.out.println("應用名:" + obj.getKeyProperty("path"));
    91. ObjectName objname = new ObjectName(obj.getCanonicalName());
    92. System.out.println("最大會話數:" + mbsc.getAttribute(objname, "maxActiveSessions"));
    93. System.out.println("會話數:" + mbsc.getAttribute(objname, "activeSessions"));
    94. System.out.println("活動會話數:" + mbsc.getAttribute(objname, "sessionCounter"));
    95. }
    96. //----------------- Thread Pool ----------------
    97. ObjectName threadpoolObjName = new ObjectName("Catalina:type=ThreadPool,*");
    98. Set<ObjectName> s2 = mbsc.queryNames(threadpoolObjName, null);
    99. for (ObjectName obj : s2) {
    100. System.out.println("端口名:" + obj.getKeyProperty("name"));
    101. ObjectName objname = new ObjectName(obj.getCanonicalName());
    102. System.out.println("最大線程數:" + mbsc.getAttribute(objname, "maxThreads"));
    103. System.out.println("當前線程數:" + mbsc.getAttribute(objname, "currentThreadCount"));
    104. System.out.println("繁忙線程數:" + mbsc.getAttribute(objname, "currentThreadsBusy"));
    105. }
    106. } catch (Exception e) {
    107. e.printStackTrace();
    108. }
    109. }
    110. public static String formatTimeSpan(long span) {
    111. long minseconds = span % 1000;
    112. span = span / 1000;
    113. long seconds = span % 60;
    114. span = span / 60;
    115. long mins = span % 60;
    116. span = span / 60;
    117. long hours = span % 24;
    118. span = span / 24;
    119. long days = span;
    120. return (new Formatter()).format("%1$d天 %2$02d:%3$02d:%4$02d.%5$03d", days, hours, mins, seconds, minseconds)
    121. .toString();
    122. }
    123. }

    1. import java.util.Iterator;
    2. import java.util.Set;
    3. import javax.management.Attribute;
    4. import javax.management.MBeanInfo;
    5. import javax.management.MBeanServerConnection;
    6. import javax.management.MBeanServerInvocationHandler;
    7. import javax.management.ObjectInstance;
    8. import javax.management.ObjectName;
    9. import javax.management.remote.JMXConnector;
    10. import javax.management.remote.JMXConnectorFactory;
    11. import javax.management.remote.JMXServiceURL;
    12. public class Client {
    13. public static void main(String[] args) throws Exception {
    14. JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
    15. JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
    16. MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
    17. ObjectName mbeanName = new ObjectName("chengang:name=HelloWorld");
    18. // 把所有Domain都打印出來
    19. System.out.println("Domains:---------------");
    20. String domains[] = mbsc.getDomains();
    21. for (int i = 0; i < domains.length; i++) {
    22. System.out.println("\tDomain[" + i + "] = " + domains[i]);
    23. }
    24. // MBean的總數
    25. System.out.println("MBean count = " + mbsc.getMBeanCount());
    26. // 對name屬性的操作(屬性名的第一個字母要大寫)
    27. mbsc.setAttribute(mbeanName, new Attribute("Name", "PANDA"));// 設值
    28. System.out.println("Name = " + mbsc.getAttribute(mbeanName, "Name"));// 取值
    29. // 得到proxy代理后直接調用的方式
    30. HelloMBean proxy = (HelloMBean) MBeanServerInvocationHandler.newProxyInstance(mbsc, mbeanName, HelloMBean.class, false);
    31. proxy.printHello();
    32. proxy.printHello("Raymend");
    33. // 遠程調用的方式
    34. mbsc.invoke(mbeanName, "printHello", null, null);
    35. mbsc.invoke(mbeanName, "printHello", new Object[] { "熊貓燒香" }, new String[] { String.class.getName() });
    36. // 得mbean的信息
    37. MBeanInfo info = mbsc.getMBeanInfo(mbeanName);
    38. System.out.println("Hello Class: " + info.getClassName());
    39. System.out.println("Hello Attriber:" + info.getAttributes()[0].getName());
    40. System.out.println("Hello Operation:" + info.getOperations()[0].getName());
    41. // 得到所有的MBean的ObjectName
    42. System.out.println("all ObjectName:---------------");
    43. Set set = mbsc.queryMBeans(null, null);
    44. for (Iterator it = set.iterator(); it.hasNext();) {
    45. ObjectInstance oi = (ObjectInstance) it.next();
    46. System.out.println("\t" + oi.getObjectName());
    47. }
    48. // 關閉MBeanServer連接
    49. jmxc.close();
    50. }
    51. }

    posted @ 2012-09-05 14:14 japper 閱讀(4990) | 評論 (0)編輯 收藏

    LinkedHashMap和HashMap的比較使用

    由于現在項目中用到了LinkedHashMap,并不是太熟悉就到網上搜了一下。







    import
    java.util.HashMap;

    import
    java.util.Iterator;

    import
    java.util.LinkedHashMap;

    import
    java.util.Map;

    public
    class TestLinkedHashMap {


      public static
    void main(String
    args[])

      {

       System.out.println("*************************LinkedHashMap*************");

       Map<Integer,String> map = new LinkedHashMap<Integer,String>();

       map.put(6, "apple");

       map.put(3, "banana");

       map.put(2,"pear");

      

       for (Iterator it =  map.keySet().iterator();it.hasNext();)

       {

        Object key = it.next();

        System.out.println(
    key+
    "="+
    map.get(key));

       }

      

       System.out.println("*************************HashMap*************");

       Map<Integer,String>
    map1 =
    new  HashMap<Integer,String>();

       map1.put(6, "apple");

       map1.put(3, "banana");

       map1.put(2,"pear");

      

       for (Iterator it = map1.keySet().iterator();it.hasNext();)

       {

        Object key = it.next();

        System.out.println(
    key+
    "="+
    map1.get(key));

       }

      }

    }


    運行結果如下:


    *************************LinkedHashMap*************
    6=apple
    3=banana
    2=pear
    *************************HashMap**************************
    2=pear
    6=apple
    3=banana


    分析:LinkedHashmap 的特點是put進去的對象位置未發生變化,而HashMap會發生變化.


    再普及下:




    java為數據結構中的映射定義了一個接口java.util.Map;它有四個實現類,分別是HashMap
    Hashtable LinkedHashMap 和TreeMap
    .


    Map主要用于存儲健值對,根據鍵得到值,因此不允許鍵重復(重復了覆蓋了),但允許值重復。
    Hashmap
    是一個最常用的Map,它根據鍵的HashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度,遍歷時,取得數據的順序是完全隨機的。
    HashMap最多只允許一條記錄的鍵為Null;允許多條記錄的值為
    Null;HashMap不支持線程的同步,即任一時刻可以有多個線程同時寫HashMap;可能會導致數據的不一致。如果需要同步,可以用
    Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。


    Hashtable與
    HashMap類似,它繼承自Dictionary類,不同的是:它不允許記錄的鍵或者值為空;它支持線程的同步,即任一時刻只有一個線程能寫Hashtable,因此也導致了
    Hashtable在寫入時會比較慢。


    LinkedHashMap
    是HashMap的一個子類,保存了記錄的插入順序,在用Iterator遍歷LinkedHashMap時,先得到的記錄肯定是先插入的.也可以在構造時用帶參數,按照應用次數排序。在遍歷的時候會比HashMap慢,不過有種情況例外,當HashMap容量很大,實際數據較少時,遍歷起來可能會比
    LinkedHashMap慢,因為LinkedHashMap的遍歷速度只和實際數據有關,和容量無關,而HashMap的遍歷速度和他的容量有關。


    TreeMap實現SortMap接口,能夠把它保存的記錄根據鍵排序,默認是按鍵值的升序排序,也可以指定排序的比較器,當用Iterator
    遍歷TreeMap時,得到的記錄是排過序的。


    一般情況下,我們用的最多的是HashMap,在Map 中插入、刪除和定位元素,HashMap
    是最好的選擇。但如果您要按自然順序或自定義順序遍歷鍵,那么TreeMap會更好。如果需要輸出的順序和輸入的相同,那么用LinkedHashMap
    可以實現,它還可以按讀取順序來排列.


    HashMap是一個最常用的Map,它根據鍵的hashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度。HashMap最多只允許一條記錄的鍵為NULL,允許多條記錄的值為NULL。


    HashMap不支持線程同步,即任一時刻可以有多個線程同時寫HashMap,可能會導致數據的不一致性。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。


    Hashtable與HashMap類似,不同的是:它不允許記錄的鍵或者值為空;它支持線程的同步,即任一時刻只有一個線程能寫Hashtable,因此也導致了Hashtable在寫入時會比較慢。


    LinkedHashMap保存了記錄的插入順序,在用Iterator遍歷LinkedHashMap時,先得到的記錄肯定是先插入的。


    在遍歷的時候會比HashMap慢TreeMap能夠把它保存的記錄根據鍵排序,默認是按升序排序,也可以指定排序的比較器。當用Iterator遍歷TreeMap時,得到的記錄是排過序的。

    posted @ 2012-09-05 14:12 japper 閱讀(16467) | 評論 (5)編輯 收藏

    主站蜘蛛池模板: 在线a免费观看最新网站| 四虎国产精品免费永久在线| 91黑丝国产线观看免费| 亚洲人成77777在线观看网| 一区二区三区观看免费中文视频在线播放 | 亚洲福利视频一区| 久久国产免费一区二区三区| 亚洲国产香蕉碰碰人人| 99久久人妻精品免费一区| 亚洲成无码人在线观看| 国产免费久久精品99re丫y| 亚洲中文字幕无码av永久| 中国一级全黄的免费观看| 最近中文字幕mv免费高清视频7| 亚洲国产精品综合久久久| 国产成人免费爽爽爽视频| 中国亚洲呦女专区| 免费h成人黄漫画嘿咻破解版| 欧洲乱码伦视频免费国产| 德国女人一级毛片免费| 国产妇乱子伦视频免费| 激情综合亚洲色婷婷五月| 免费特级黄毛片在线成人观看| 免费国产高清毛不卡片基地| 国产∨亚洲V天堂无码久久久| 9277手机在线视频观看免费| 亚洲综合色一区二区三区| 免费人成年激情视频在线观看| 人成免费在线视频| 久久丫精品国产亚洲av| 国产美女做a免费视频软件| 一区免费在线观看| 亚洲一区二区三区四区在线观看| 日韩欧美一区二区三区免费观看| 高潮毛片无遮挡高清免费视频| 亚洲AV日韩精品久久久久久久 | 无码国模国产在线观看免费| 国产精品免费久久| 亚洲AV综合色区无码二区偷拍| 亚洲国产成人五月综合网 | 在线播放免费人成视频在线观看|