java集合框架代码 集合框架类

JAVA集合框架的总结

1.数组把对象和数字形式的下标联系起来。它持有的是类型确定的对象,这样提取对象的时候就不用再作类型传递了。它可以是多维的,也可以持有primitive。但是创建之后它的容量不能改了。

成都创新互联专注于凤县企业网站建设,响应式网站建设,商城开发。凤县网站建设公司,为凤县等地区提供建站服务。全流程定制制作,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务

2.Collection持有单个元素,而Map持有相关联的pair。

3.和数组一样,List也把数字下标同对象联系起来,你可以把数组和List想成有序的容器。List会随元素的增加自动调整容量。但是List只能持有Objectreference,所以不能存放primitive,而且把Object提取出来之后,还要做类型传递。

4.如果要做很多随机访问,那么请用ArrayList,但是如果要再List的中间做很多插入和删除的话,就应该用LinkedList了。

5.LinkedList能提供队列,双向队列和栈的功能。

6.Map提供的不是对象与数组的关联,而是对象和对象的关联。

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,新增了衣服的方法。每次计算的价格可以写成共通方法。希望其他人有好的建议也发上来。

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平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。

Java 2集合框架图

集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。

抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。

实现类:8个实现类(实线表示),对接口的具体实现。

在很大程度上,一旦您理解了接口,您就理解了框架。虽然您总要创建接口特定的实现,但访问实际集合的方法应该限制在接口方法的使用上;因此,允许您更改基本的数据结构而不必改变其它代码。

· Collection 接口是一组允许重复的对象。

· Set 接口继承 Collection,但不允许重复,使用自己内部的一个排列机制。

· List 接口继承 Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。

· Map接口是一组成对的键-值对象,即所持有的是key-value pairs。Map中不能有重复的key。拥有自己的内部排列机制。

· 容器中的元素类型都为Object。从容器取得元素时,必须把它转换成原来的类型。

Java 2简化集合框架图

集合接口

1.Collection 接口

用于表示任何对象或元素组。想要尽可能以常规方式处理一组元素时,就使用这一接口。

(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://cdiso.cn/article/docsdie.html

其他资讯