swzhebei

          常用鏈接

          統計

          最新評論

          • 1.?re: 調用百度地圖小實例
          • 如果我有100個經緯度 請問,您是不是再代碼里寫100個?你這樣沒有價值,如何獲取動態的請說明!
          • --toly
          • 2.?re: 調用百度地圖小實例
          • 更改經緯度就不行了!?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?
          • --你姥姥

          #

          java集合詳解

          本文系 www.javady.com網站原創
          總接口:Iterable<T>  實現這個接口允許對象成為 "foreach" 語句的目標。

             Collection<E> 層次結構 中的根接口。Collection 表示一組對象

          一、   List  :實現 collection接口  有序的集合  可以允許重復

          ArrayList                           
          初始大小 10
          擴容因子 (大小*3)/2 + 1
          擴容例子 10 超過時之后擴容到  16  然后  25 然后 38...
          數據處理 刪除其中一個元素后后面的元素會自動向前推
          線程是否安全 不安全
          優勢 ArrayList的優勢在于讀取和表尾插入
          多線程使用 List list = Collections.synchronizedList(new ArrayList(…))

                

          LinkedList
          說明 List接口的鏈接列表實現 。
          初始大小 1
          數據處理 刪除其中一個元素后后面的元素會自動向前推,

           

          LinkedList 中的鏈接關系是由 Entity實現的,

          每個Entity都有 上一個Entity引用 下一個Entity引用

          本身元素值Entry(E element, Entry<E> next, Entry<E> previous)

          LinkedList 類還為在列表的開頭及結尾 get、remove 和 insert

          元素提供了統一的命名方法。

          此類實現 Queue 接口,為 add、poll 等提供先進先出隊列操作

          優勢 LinkedList的優勢在于表中插入和刪除
          線程是否安全 不安全 ,可以使用如下進行安全處理

           

          List list = Collections.synchronizedList(new LinkedList(...));

           

          Vector
          說明 Vector 類可以實現可增長的對象數組
          初始大小 10
          擴容因子 1 ,  默認擴容一倍
          擴容例子 10 超過時之后擴容到  20  然后  40 然后 80…
          數據處理 刪除其中一個元素后后面的元素會自動向前推
          是否同步 Vector 是同步的
          用法 一般在多線程中使用對于一般的數據存儲直接用ArrayList

           

          Stack
          類型解釋 表示后進先出(LIFO)的對象堆棧 。

           

          它通過五個操作對類 Vector 進行了擴展 ,

          允許將向量視為堆棧。

          它提供了通常的 push 和 pop 操作

          幾種方法 empty()

           

          測試堆棧是否為空。

          E peek()

          查看棧頂對象而不移除它。

          E pop()

          移除棧頂對象并作為此函數的值返回該對象。

          E push(E item)

          把項壓入棧頂。

          int search(Object o)

          返回對象在棧中的位置,以 1 為基數。

          Arrays                           
          說明 專門用來操作數組的輔助類  Array  固定個數效率最高
          數據處理 Arrays中擁有一組static函數,
          equals():  比較兩個array是否相等。array擁有相同元素個數,

           

          且所有對應元素兩兩相等。
          fill():    將值填入array中。
          sort():    用來對array進行排序。
          binarySearch():在排好序的array中尋找元素。
          System.arraycopy():array的復制

          優勢 這個就是用來處理數組的,效率特別高

           

          如果之前對Arrays沒這么的重視,在J2SE 5.0之后,可以多關照它幾眼

          。如果有數組操作方面的相關需求,可以先查查 java.util.Arrays的API文

          件說明,看看有沒有現成的方法可以使用

           

          二、Set   :一個不包含重復元素的 collection。

          HashSet
          說明 內部使用HashMap 來存儲數據
          初始大小 16
          擴容因子 數據超過當前大小*0.75 容量擴一倍
          擴容例子 當前容量16 如果插入13個數 超過了(16*0.75=12)

           

          容量增加16 最后容量是 32。

          優勢 不允許有重復的元素
          線程是否安全 不安全,可以使用如下進行安全處理

           

          Set s = Collections.synchronizedSet(new HashSet(...))

           

          LinkedHashSet
          說明 內部使用HashMap 來存儲數據
          初始大小 16
          擴容因子 數據超過當前大小*0.75 容量擴一倍
          擴容例子 當前容量16 如果插入13個數 超過了(16*0.75=12)

           

          容量增加16 最后容量是 32。

          優勢 不允許有重復的元素 、 查詢足夠快 、 有序
          線程是否安全 不安全,可以使用如下進行安全處理

           

          Set s = Collections.synchronizedSet(new HashSet(...))

           

          三、Map  :一個不包含重復元素的 無序集合  鍵值對 。

           

          HashMap
          說明 內部使用Entity來存儲數據,key可以為空

           

          put方法:如果key為空,則替換換Key為空的值,

          否則插入到第 O 位置上。

          for (Entry<K,V> e = table[0]; e != null; e = e.next) {

          //null key都放在table[0]上

          if (e.key == null) {

          V oldValue = e.value;

          e.value = value;

          e.recordAccess(this);

          return oldValue;

          }

          }

          如果key不為空,先算出來key對象的hashcode ,

          然后調用函數 hash()在算一次,

          最后把結果和當前hash大小進行計算找到存放該值的位置;

          如果該位置有值 直接把當前值(entity)鏈接到該值最前面 ,

          Entry<K,V> e = table[bucketIndex];

          //這個地方獲取當前位置的 e

          //table[bucketIndex] = new Entry<K,V>(hash, key, value, e);

          //這個地方把要插入的entity的next屬性指向 e,

          然后把整個entity放入 hashMap的index位置,

          如果沒有值就直接放入,

          數組位置每變大一次  里面每個對象的位置都要重新計算一下

          初始大小 16
          擴容因子 數據超過當前大小*0.75 容量擴一倍
          擴容例子 當前容量16 如果插入13個數 超過了(16*0.75=12)

           

          容量增加16 最后容量是 32

          優勢 查詢足夠快
          線程是否安全 線程不安全  可以使用如下進行安全處理

           

          Set s = Collections.synchronizedSet(new HashSet(...))

           

           

          Hashtable
          初始大小 11
          擴容因子 大小 = 大小 * 2 + 1
          擴容例子 11 然后  23 然后47 ....
          是否同步 hashtable是同步的.
          優勢 查詢足夠快
          說明 key  不允許為空

           

          數據的put和get和hashMap基本上一致

          里面的所有方法除了不需要同步的都有 synchronized

           

           

          LinkedHashMap
          初始大小 16
          擴容因子 數據超過當前大小*0.75 容量擴一倍
          擴容例子 當前容量16 如果插入13個數 超過了(16*0.75=12)

           

          容量增加16 最后容量是 32

          是否同步 異步線程不安全 多線程使用可以如下

           

          Map m = Collections.synchronizedMap(new LinkedHashMap(...))
          優勢 查詢足夠快的  有序
          說明 鏈表的形式存儲數據 使用的hash算法保持數據,但同樣也維護了一個插入

           

          順序查詢對象時,速度足夠快

           

          TreeMap 
          初始大小 0
          擴容因子 1
          擴容例子 每插入一個鍵值對,內部創建一個entity來存儲    size + 1
          是否同步 異步線程不安全 多線程使用可以如下

           

          Map m = Collections.synchronizedMap(new TreeMap(...));
          優勢  能夠維護其內元素的排序狀態
          說明 TreeMap 初始化為0 , 每插入一個鍵值對,內部創建一個entity來存儲

           

          內部實現和維護的是一顆紅黑樹,遍歷的時候使用的是前序遍歷法,但是

          查詢get方法的時候需要遍歷,速度不如直接使用hash算法的快

           

           

          Properties
          初始大小 11
          擴容因子 大小 = 大小 * 2 + 1
          擴容例子 11 然后  23 然后47 ....
          是否同步 是同步的.
          優勢 查詢足夠快   可保存在流中或從流中加載數據
          說明 實現了 HashTable  表示了一個持久的屬性集。

           

          Properties 可保存在流中或從流中加載數據。

           

           

          posted @ 2012-05-14 16:50 透明的魚 閱讀(295) | 評論 (0)編輯 收藏

          xstream 讓javabean和xml互相轉換(轉載)

               摘要: 今天需要把數據庫的數據導出l,然后也可以從外面導入保存到數據庫。 考慮導出的數據格式為xml或json。json的話可以用google的gson實現。 以前做過。導出為xml的話,以前都是用java拼裝或jdom或dom4j。今天 發現xstream也很強大,既可以把java對象轉化為xml,也可以從xml轉化為java 對象。專業說法,就是可以序列化為xml,也可以凡序列化為java對象...  閱讀全文

          posted @ 2012-05-14 16:01 透明的魚 閱讀(3950) | 評論 (0)編輯 收藏

          java知識

              只有注冊用戶登錄后才能閱讀該文。閱讀全文

          posted @ 2012-04-18 16:23 透明的魚 閱讀(14) | 評論 (0)編輯 收藏

          調用百度地圖小實例

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<html xmlns="<head>
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
          <meta name="keywords" content="" />
          <meta name="description" content="百度地圖API自定義地圖,幫助用戶在可視化操作下生成百度地圖" />
          <title>百度地圖API自定義地圖</title>
          <!--引用百度地圖API-->
          <style type="text/css">
              html,body{margin:0;padding:0;}
              .iw_poi_title {color:#CC5522;font-size:14px;font-weight:bold;overflow:hidden;padding-right:13px;white-space:nowrap}
              .iw_poi_content {font:12px arial,sans-serif;overflow:visible;padding-top:4px;white-space:-moz-pre-wrap;word-wrap:break-word}
          </style>
          <script type="text/javascript" src="
          >
          </head>

          <body>
            <!--百度地圖容器-->
            <div style="width:697px;height:550px;border:#ccc solid 1px;" id="dituContent"></div>
          </body>
          <script type="text/javascript">
              var opts = {
                width : 100,     // 信息窗口寬度
                height: 50,     // 信息窗口高度
                title : "IBM中國股份有限公司"  // 信息窗口標題
              }
              //創建和初始化地圖函數:
              function initMap() {
                  createMap(); //創建地圖
                  setMapEvent(); //設置地圖事件
                  addMapControl(); //向地圖添加控件
              }

              //創建地圖函數:
              function createMap() {
                  var map = new BMap.Map("dituContent"); //在百度地圖容器中創建一個地圖
                  var point = new BMap.Point(104.114129, 37.550339); //定義一個中心點坐標
                  map.centerAndZoom(point, 5); //設定地圖的中心點和坐標并將地圖顯示在地圖容器中
                  window.map = map; //將map變量存儲在全局

                  //向地圖添加標注
                  var bounds = map.getBounds();       

                  var point = new BMap.Point(116.326655,39.902095);
                  var marker = new BMap.Marker(point);
                  var label = new BMap.Label('IBM全球總部',{"offset":new BMap.Size(9,-15)});
                  marker.setLabel(label);
                  map.addOverlay(marker);
                  marker.addEventListener("click", function(){this.openInfoWindow(new BMap.InfoWindow("全球總部(北京)</br>Tel:010-10000000", opts));});

                  var point = new BMap.Point(103.809019, 30.850669);
                  var marker = new BMap.Marker(point);
                  var label = new BMap.Label('成都分公司',{"offset":new BMap.Size(9,-15)});
                  marker.setLabel(label);
                  map.addOverlay(marker);
                  marker.addEventListener("click", function(){this.openInfoWindow(new BMap.InfoWindow("成都分公司</br>Tel:暫無", opts));});

                  var point = new BMap.Point(114.059763,22.646821);
                  var marker = new BMap.Marker(point);
                  var label = new BMap.Label('香港分公司',{"offset":new BMap.Size(9,-15)});
                  marker.setLabel(label);
                  map.addOverlay(marker);
                  marker.addEventListener("click", function(){this.openInfoWindow(new BMap.InfoWindow("香港分公司</br>Tel:暫無", opts));});

                  var point = new BMap.Point(121.323246, 31.294085);
                  var marker = new BMap.Marker(point);
                  var label = new BMap.Label('上海分公司',{"offset":new BMap.Size(9,-15)});
                  marker.setLabel(label);
                  map.addOverlay(marker);
                  marker.addEventListener("click", function(){this.openInfoWindow(new BMap.InfoWindow("上海分公司</br>Tel:暫無", opts));});
              }
              // 編寫自定義函數,創建標注
              function addMarker(point, index) {
                  var myIcon = new BMap.Icon("
                      offset: new BMap.Size(10, 25),                  // 指定定位位置
                      imageOffset: new BMap.Size(0, 0 - index * 25)   // 設置圖片偏移
                  });
                  var marker = new BMap.Marker(point, { icon: myIcon });
                  map.addOverlay(marker);
              }

              //地圖事件設置函數:
              function setMapEvent() {
                  map.enableDragging(); //啟用地圖拖拽事件,默認啟用(可不寫)
                  map.enableScrollWheelZoom(); //啟用地圖滾輪放大縮小
                  map.enableDoubleClickZoom(); //啟用鼠標雙擊放大,默認啟用(可不寫)
                  map.enableKeyboard(); //啟用鍵盤上下左右鍵移動地圖
              }

              //地圖控件添加函數:
              function addMapControl() {
                  //向地圖中添加縮放控件
                  var ctrl_nav = new BMap.NavigationControl({ anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE });
                  map.addControl(ctrl_nav);
                  //向地圖中添加縮略圖控件
                  var ctrl_ove = new BMap.OverviewMapControl({ anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1 });
                  map.addControl(ctrl_ove);
                  //向地圖中添加比例尺控件
                  var ctrl_sca = new BMap.ScaleControl({ anchor: BMAP_ANCHOR_BOTTOM_LEFT });
                  map.addControl(ctrl_sca);
              }
              initMap(); //創建和初始化地圖
          </script>
          </html>

          posted @ 2012-04-18 16:19 透明的魚 閱讀(10094) | 評論 (2)編輯 收藏

          僅列出標題
          共2頁: 上一頁 1 2 
          主站蜘蛛池模板: 舒城县| 当阳市| 枣强县| 黑龙江省| 神木县| 法库县| 嵩明县| 孟连| 抚远县| 芮城县| 绥德县| 射洪县| 石台县| 庆城县| 舞阳县| 北京市| 宁阳县| 南丹县| 锡林浩特市| 农安县| 花垣县| 沧源| 繁昌县| 水城县| 马公市| 花莲市| 昆山市| 古田县| 长泰县| 庆安县| 肥西县| 铜山县| 灌南县| 敖汉旗| 塔河县| 沙雅县| 龙里县| 宜昌市| 社会| 德兴市| 黔南|