java集合框架代碼 集合框架類

JAVA集合框架的總結

1.數組把對象和數字形式的下標聯(lián)系起來。它持有的是類型確定的對象,這樣提取對象的時候就不用再作類型傳遞了。它可以是多維的,也可以持有primitive。但是創(chuàng)建之后它的容量不能改了。

成都創(chuàng)新互聯(lián)專注于鳳縣企業(yè)網站建設,響應式網站建設,商城開發(fā)。鳳縣網站建設公司,為鳳縣等地區(qū)提供建站服務。全流程定制制作,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務

2.Collection持有單個元素,而Map持有相關聯(lián)的pair。

3.和數組一樣,List也把數字下標同對象聯(lián)系起來,你可以把數組和List想成有序的容器。List會隨元素的增加自動調整容量。但是List只能持有Objectreference,所以不能存放primitive,而且把Object提取出來之后,還要做類型傳遞。

4.如果要做很多隨機訪問,那么請用ArrayList,但是如果要再List的中間做很多插入和刪除的話,就應該用LinkedList了。

5.LinkedList能提供隊列,雙向隊列和棧的功能。

6.Map提供的不是對象與數組的關聯(lián),而是對象和對象的關聯(lián)。

HashMap看重的是訪問速度,而TreeMap看重鍵的順序,因而它不如HashMap那么快。而LinkedHashMap則保持對象插入的順序,但是也可以用LRU算法為它重新排序。

7.Set只接受不重復的對象。HashSet提供了最快的查詢速度。而TreeSet則保持元素有序。LinkedHashSet保持元素的插入順序。

8.沒必要再在新代碼里使用舊類庫留下來的Vector,Hashtable和Stack了。

容器類庫是你每天都會用到的工具,它能使程序更簡潔,更強大并且更高效。

隨著Java的進一步完善,它的功能和易用性也得到提高,我有理由相信Java在計算機語言中所占的位置也會更加牢固,讓喜愛Java的人更加喜愛它。祝愿Java一路順風!

java集合框架的小問題

因為HashMap一次次添加在對象內部并不是按照先后順序添加的,我給你說說結果:

當只加第一個映射時,HashMap的打印結果是:

關鍵代碼:

aa.put("1","java");

System.out.println(aa) ;

結果:

{1=java}

第二次:

aa.put("1","java");

aa.put("2","VB");

System.out.println(aa) ;

結果:

{2=VB, 1=java}

第三次:

aa.put("1","java");

aa.put("2","VB");

aa.put("3","VC++");

結果:

{3=VC++, 2=VB, 1=java}

第四次:

aa.put("1","java");

aa.put("2","VB");

aa.put("3","VC++");

aa.put("4","c++");

結果:

{3=VC++, 2=VB, 4=c++, 1=java}

第五次:

aa.put("1","java");

aa.put("2","VB");

aa.put("3","VC++");

aa.put("4","c++");

aa.put( "5","c");

結果:

{3=VC++, 5=c, 2=VB, 4=c++, 1=java}

第六次:

aa.put("1","java");

aa.put("2","VB");

aa.put("3","VC++");

aa.put("4","c++");

aa.put( "5","c");

aa.put( "6","basic");

結果:

{3=VC++, 5=c, 2=VB, 4=c++, 6=basic, 1=java}

第七次:

aa.put("1","java");

aa.put("2","VB");

aa.put("3","VC++");

aa.put("4","c++");

aa.put( "5","c");

aa.put( "6","basic");

aa.put( "7","Jscript");

結果:

{3=VC++, 5=c, 7=Jscript, 2=VB, 4=c++, 6=basic, 1=java}

由以上結果我們可以看出來,在HashMap里,添加順序并不是按從前向后的順序添加的,也不是按從后向前添加的,在HashMap的文擋幫助里有這么一句話:"此類不保證映射的順序,特別是它不保證該順序恒久不變。",如果你又想用Map又想保持順序,可以使用LinkedHashMap,它和HashMap一樣,但是可以保證插入順序,但是這樣也增加了一點點開銷.

Java集合框架2

根據你上面的提示和程序里的要求,修改了Database,新增了衣服的方法。每次計算的價格可以寫成共通方法。希望其他人有好的建議也發(fā)上來。

import java.util.HashMap;

import java.util.Map;

public class Database {

private MapInteger, McBean data = new HashMapInteger, McBean();

public Database(){

McBean bean = new McBean();

bean.setNid(1);

bean.setSname("地瓜");

bean.setNprice(2.0);

bean.setSdescription("新鮮的地瓜");

data.put(1, bean);

bean = new McBean();

bean.setNid(2);

bean.setSname("土豆");

bean.setNprice(1.2);

bean.setSdescription("又好又大的土豆");

data.put(2, bean);

bean = new McBean();

bean.setNid(3);

bean.setSname("絲瓜");

bean.setNprice(1.5);

bean.setSdescription("本地絲瓜");

data.put(3, bean);

bean = new McBean();

bean.setNid(4);

bean.setSname("衣服");

bean.setNprice(30);

bean.setSdescription("衣服");

data.put(4, bean);

}

public McBean getMcBean(int nid){

return data.get(nid);

}

}

public class McBean {

private Integer nid; //商品編號

private String sname; //名稱

private double nprice; //價格

private String sdescription; //描述

public Integer getNid() {

return nid;

}

public void setNid(Integer nid) {

this.nid = nid;

}

public String getSname() {

return sname;

}

public void setSname(String sname) {

this.sname = sname;

}

public double getNprice() {

return nprice;

}

public void setNprice(double nprice) {

this.nprice = nprice;

}

public String getSdescription() {

return sdescription;

}

public void setSdescription(String sdescription) {

this.sdescription = sdescription;

}

}

public class OrderItemBean {

private McBean mcbean; //商品

private int count; //商品數量

public McBean getMcbean() {

return mcbean;

}

public void setMcbean(McBean mcbean) {

this.mcbean = mcbean;

}

public int getCount() {

return count;

}

public void setCount(int count) {

this.count = count;

}

}

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

public class ShoppingCar {

private double totalPrice; //購物車所有商品總價格

private int totalCount; //購物車所有商品數量

private MapInteger,OrderItemBean itemMap; //商品編號與訂單項的鍵值對

public ShoppingCar(){

//初始化購物車

itemMap = new HashMapInteger, OrderItemBean();

Database db = new Database();

McBean bean = new McBean();

OrderItemBean orderItem1 = new OrderItemBean();

OrderItemBean orderItem2 = new OrderItemBean();

OrderItemBean orderItem3 = new OrderItemBean();

bean = db.getMcBean(1);

orderItem1.setMcbean(bean);

orderItem1.setCount(2);

bean = db.getMcBean(2);

orderItem2.setMcbean(bean);

orderItem2.setCount(5);

bean = db.getMcBean(4);

orderItem3.setMcbean(bean);

orderItem3.setCount(3);

itemMap.put(1, orderItem1);

itemMap.put(2, orderItem2);

itemMap.put(4, orderItem3);

totalCount = itemMap.size();

totalPrice = 0;

Set set = itemMap.entrySet();

Iterator i = set.iterator();

while(i.hasNext()){

Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();

totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();

}

}

public void buy(int nid){

//如果該商品是第一次購買,商品的信息從數據庫獲取,數據庫的模擬代

//碼見附錄。itemMap增加一對鍵值對。

//如果不是第一次購買,則通過商品編號找到對應的定單項,然后更新定

//單項的商品數量。

//不管是否第一次購買,都得更新購物車的總價格和總數量。

Database db = new Database();

McBean mcBean = new McBean();

OrderItemBean orderItem = new OrderItemBean();

if(itemMap.get(nid) == null) {

mcBean = db.getMcBean(nid);

orderItem.setMcbean(mcBean);

orderItem.setCount(1);

itemMap.put(nid, orderItem);

} else {

orderItem = itemMap.get(nid);

orderItem.setCount(orderItem.getCount() + 1);

}

totalCount = itemMap.size();

totalPrice = 0;

Set set = itemMap.entrySet();

Iterator i = set.iterator();

while(i.hasNext()){

Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();

totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();

}

}

public void delete(int nid){

//通過商品編號刪除的對應的定單項,然后從更新購物車的總價格和總數量。

itemMap.remove(nid);

totalCount = itemMap.size();

totalPrice = 0;

Set set = itemMap.entrySet();

Iterator i = set.iterator();

while(i.hasNext()){

Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();

totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();

}

}

public void update(int nid, int count){

///通過商品編號找到對應的對應的定單項,修改商品數量。然后從更新購物車的總價格和總數量。

OrderItemBean orderItem = new OrderItemBean();

orderItem = itemMap.get(nid);

orderItem.setCount(count);

totalCount = itemMap.size();

totalPrice = 0;

Set set = itemMap.entrySet();

Iterator i = set.iterator();

while(i.hasNext()){

Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();

totalPrice += entry1.getValue().getCount() * entry1.getValue().getMcbean().getNprice();

}

}

public void clear(){

//清空定單項,購物車的總價格和總數量清零。

itemMap.clear();

totalCount = 0;

totalPrice = 0;

}

public void show(){

//顯示購物車的商品,格式如下:

//商品編號 商品名稱 單價 購買數量 總價

//1 地瓜 2.0 2 4.0

//2 衣服 30 5 150

//…

//合計:總數量:5 總價格:20元

System.out.println("商品編號" + " " + "商品名稱" + " " + "單價" + " " + "購買數量" + " " + "總價" );

Set set = itemMap.entrySet();

Iterator i = set.iterator();

while(i.hasNext()){

Map.EntryInteger, OrderItemBean entry1=(Map.EntryInteger, OrderItemBean)i.next();

int nid = entry1.getKey();

String name = entry1.getValue().getMcbean().getSname();

double price = entry1.getValue().getMcbean().getNprice();

int count = entry1.getValue().getCount();

double totalprice = price * count;

System.out.println(nid + " "+ name + " " + price + " " + count + " " + totalprice);

}

System.out.println("合計:總數量:" + totalCount + " 總價格:" + totalPrice+ "元");

}

public static void main(String[] args) {

ShoppingCar shoppingCar = new ShoppingCar();

shoppingCar.show();

System.out.println("--------------------------------");

shoppingCar.buy(3);

shoppingCar.show();

System.out.println("--------------------------------");

shoppingCar.update(4, 2);

shoppingCar.show();

System.out.println("--------------------------------");

shoppingCar.delete(2);

shoppingCar.show();

System.out.println("--------------------------------");

shoppingCar.clear();

shoppingCar.show();

}

}

運行結果:

商品編號 商品名稱 單價 購買數量 總價

1 地瓜 2.0 2 4.0

2 土豆 1.2 5 6.0

4 衣服 30.0 3 90.0

合計:總數量:3 總價格:100.0元

--------------------------------

商品編號 商品名稱 單價 購買數量 總價

1 地瓜 2.0 2 4.0

2 土豆 1.2 5 6.0

3 絲瓜 1.5 1 1.5

4 衣服 30.0 3 90.0

合計:總數量:4 總價格:101.5元

--------------------------------

商品編號 商品名稱 單價 購買數量 總價

1 地瓜 2.0 2 4.0

2 土豆 1.2 5 6.0

3 絲瓜 1.5 1 1.5

4 衣服 30.0 2 60.0

合計:總數量:4 總價格:71.5元

--------------------------------

商品編號 商品名稱 單價 購買數量 總價

1 地瓜 2.0 2 4.0

3 絲瓜 1.5 1 1.5

4 衣服 30.0 2 60.0

合計:總數量:3 總價格:65.5元

--------------------------------

商品編號 商品名稱 單價 購買數量 總價

合計:總數量:0 總價格:0.0元

求大神,java的集合框架是什么意思?

Java平臺提供了一個全新的集合框架?!凹峡蚣堋敝饕梢唤M用來操作對象的接口組成。不同接口描述一組不同數據類型。

Java 2集合框架圖

集合接口:6個接口(短虛線表示),表示不同集合類型,是集合框架的基礎。

抽象類:5個抽象類(長虛線表示),對集合接口的部分實現??蓴U展為自定義集合類。

實現類:8個實現類(實線表示),對接口的具體實現。

在很大程度上,一旦您理解了接口,您就理解了框架。雖然您總要創(chuàng)建接口特定的實現,但訪問實際集合的方法應該限制在接口方法的使用上;因此,允許您更改基本的數據結構而不必改變其它代碼。

· Collection 接口是一組允許重復的對象。

· Set 接口繼承 Collection,但不允許重復,使用自己內部的一個排列機制。

· List 接口繼承 Collection,允許重復,以元素安插的次序來放置元素,不會重新排列。

· Map接口是一組成對的鍵-值對象,即所持有的是key-value pairs。Map中不能有重復的key。擁有自己的內部排列機制。

· 容器中的元素類型都為Object。從容器取得元素時,必須把它轉換成原來的類型。

Java 2簡化集合框架圖

集合接口

1.Collection 接口

用于表示任何對象或元素組。想要盡可能以常規(guī)方式處理一組元素時,就使用這一接口。

(1) 單元素添加、刪除操作:

 boolean add(Object o):將對象添加給集合

 boolean remove(Object o): 如果集合中有與o相匹配的對象,則刪除對象o

(2) 查詢操作:

 int size() :返回當前集合中元素的數量

 boolean isEmpty() :判斷集合中是否有任何元素

 boolean contains(Object o) :查找集合中是否含有對象o

 Iterator iterator() :返回一個迭代器,用來訪問集合中的各個元素

(3) 組操作 :作用于元素組或整個集合

 boolean containsAll(Collection c): 查找集合中是否含有集合c 中所有元素

 boolean addAll(Collection c) : 將集合c 中所有元素添加給該集合

 void clear(): 刪除集合中所有元素

 void removeAll(Collection c) : 從集合中刪除集合c 中的所有元素

 void retainAll(Collection c) : 從集合中刪除集合c 中不包含的元素

(4) Collection轉換為Object數組 :

 Object[] toArray() :返回一個內含集合所有元素的array

 Object[] toArray(Object[] a) :返回一個內含集合所有元素的array。運行期返回的array和參數a的型別相同,需要轉換為正確型別。

文章標題:java集合框架代碼 集合框架類
網頁路徑:http://muchs.cn/article4/docsdie.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站設計公司、企業(yè)網站制作移動網站建設、做網站、、品牌網站設計

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網站托管運營