Java集合类
2019-03-06 本文已影响0人
天才一般的幼稚
集合类就是一种变长数组。Java集合类中不能存放基本数据类型,而只能存放对象。Java集合类主要是由两个接口派生而出的:Collection和Map。
1、使用集合框架类实现购物车功能
Product.java
package collectiontest;
public class Product {
private String pNO; //商品编号
private String pName; //商品名称
private double sellPrice; //价格
private int points; //积分
private int amounts = 0; //数量
public String getpNO() {
return pNO;
}
public void setpNO(String pNO) {
this.pNO = pNO;
}
public String getpName() {
return pName;
}
public void setpName(String pName) {
this.pName = pName;
}
public double getSellPrice() {
return sellPrice;
}
public void setSellPrice(double sellPrice) {
this.sellPrice = sellPrice;
}
public int getPoints() {
return points;
}
public void setPoints(int points) {
this.points = points;
}
public int getAmounts() {
return amounts;
}
public void setAmounts(int amounts) {
this.amounts = amounts;
}
}
ShoppingCart.java
package collectiontest;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ShoppingCart {
//定义集合,模拟购物车
private List list = new ArrayList();
//增加一个商品
public void addProduct(Product p){
//如果购物车(集合里)已经存在该种商品,将数量加1
for(int i=0; i<list.size(); i++){
Object obj = list.get(i);
Product product = (Product)obj;
if(product.getpNO().equals(p.getpNO())){
product.setAmounts(product.getAmounts()+1);
return;
}
}
p.setAmounts(1);
list.add(p);
}
//删除一个商品
public void deleteProduct(String pNO){
//如果购物车(集合)里已经存在该种商品,判断数量是否为1
for(int i=0; i<list.size(); i++){
Object obj = list.get(i);
Product product = (Product)obj;
if(product.getpNO().equals(pNO)){
//商品数量大于1时将数量减去1,数量等于1时删除该商品
if(product.getAmounts() > 1){
product.setAmounts(product.getAmounts() - 1);
}
else{
list.remove(i);
}
return;
}
}
//如果不存在,提示出错
System.out.println("购物车中不存在该商品!");
}
//修改商品个数
public void updateCount(String pNO, int amount){
if(amount <= 0){
System.out.println("商品数量应该大于0");
}
for(int i=0; i<list.size(); i++){
Object obj = list.get(i);
Product product = (Product)obj;
if(product.getpNO().equals(pNO)){
product.setAmounts(amount);
return;
}
}
//如果不存在,提示出错
System.out.println("购物车中不存在该商品");
}
//显示购物车中的所有商品
public void showChart(){
System.out.print(String.format("%-16s", "|商品编号"));
System.out.print(String.format("%-20s", "|商品名称"));
System.out.print(String.format("%-6s", "|价格"));
System.out.print(String.format("%-6s", "|积分"));
System.out.print(String.format("%-6s", "|数量"));
System.out.print("\n");
Iterator item = list.iterator();
while(item.hasNext()){
Product p = (Product)item.next();
System.out.print(String.format("%-10s", "|"+p.getpNO()));
System.out.print(String.format("%-20s", "|"+p.getpName()));
System.out.print(String.format("%-6s", "|"+p.getSellPrice()));
System.out.print(String.format("%-6s", "|"+p.getPoints()));
System.out.print(String.format("%-6s", "|"+p.getAmounts()));
System.out.print("\n");
}
}
}
Test.java
package collectiontest;
public class Test {
public static void main(String[] args) {
ShoppingCart cart = new ShoppingCart();
//创建第一种商品
Product p1 = new Product();
p1.setpNO("234126789");
p1.setpName("高露洁140g");
p1.setSellPrice(12.9);
System.out.println("1.增加一个新的购物车");
p1.setPoints(1);
cart.addProduct(p1);
cart.showChart();
System.out.println("\n2.增加一个新商品的购物车");
cart.addProduct(p1);
cart.showChart();
//创建第二种商品
Product p2 = new Product();
p2.setpNO("76124241212");
p2.setpName("飘柔洗发水1000ml");
p2.setSellPrice(23.12);
p2.setPoints(2);
System.out.println("\n3.再增加一个新的购物车");
cart.addProduct(p2);
cart.showChart();
System.out.println("\n4.删除一个新商品的购物车");
cart.deleteProduct("234126789");
cart.showChart();
}
}

总结:
1、list.size():计算列表中元素的个数
2、list.get(i):返回列表中指定索引的元素,返回Object对象
3、.equal()判断值
4、list.add(p):将p插入到列表尾部
5、list.remove(i)移除指定位置的元素
6、String.format("",""):格式化输出字符串
2、使用泛型集合实现购物车功能
在创建List集合对象时,使用泛型约束存放的对象类型,这样在使用Iterator迭代器进行读取时就不需要进行强制转换。
ShoppingCart.java
package collectiontest;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ShoppingCart {
//定义泛型集合,模拟购物车
private List<Product> list = new ArrayList<Product>();
//增加一个商品
public void addProduct(Product p){
//如果购物车(集合里)已经存在该种商品,将数量加1
for(int i=0; i<list.size(); i++){
Object obj = list.get(i);
Product product = (Product)obj;
if(product.getpNO().equals(p.getpNO())){
product.setAmounts(product.getAmounts()+1);
return;
}
}
p.setAmounts(1);
list.add(p);
}
//删除一个商品
public void deleteProduct(String pNO){
//如果购物车(集合)里已经存在该种商品,判断数量是否为1
for(int i=0; i<list.size(); i++){
Object obj = list.get(i);
Product product = (Product)obj;
if(product.getpNO().equals(pNO)){
//商品数量大于1时将数量减去1,数量等于1时删除该商品
if(product.getAmounts() > 1){
product.setAmounts(product.getAmounts() - 1);
}
else{
list.remove(i);
}
return;
}
}
//如果不存在,提示出错
System.out.println("购物车中不存在该商品!");
}
//修改商品个数
public void updateCount(String pNO, int amount){
if(amount <= 0){
System.out.println("商品数量应该大于0");
}
for(int i=0; i<list.size(); i++){
Object obj = list.get(i);
Product product = (Product)obj;
if(product.getpNO().equals(pNO)){
product.setAmounts(amount);
return;
}
}
//如果不存在,提示出错
System.out.println("购物车中不存在该商品");
}
//显示购物车中的所有商品
public void showChart(){
System.out.print(String.format("%-16s", "|商品编号"));
System.out.print(String.format("%-20s", "|商品名称"));
System.out.print(String.format("%-6s", "|价格"));
System.out.print(String.format("%-6s", "|积分"));
System.out.print(String.format("%-6s", "|数量"));
System.out.print("\n");
Iterator<Product> item = list.iterator();
while(item.hasNext()){
Product p = item.next();
System.out.print(String.format("%-10s", "|"+p.getpNO()));
System.out.print(String.format("%-20s", "|"+p.getpName()));
System.out.print(String.format("%-6s", "|"+p.getSellPrice()));
System.out.print(String.format("%-6s", "|"+p.getPoints()));
System.out.print(String.format("%-6s", "|"+p.getAmounts()));
System.out.print("\n");
}
}
}