import java.util.*;
/*
该示例为把集合中把同一箱子(箱号和名字相同即认定为同一箱子)根据型号的进行统计输出
例如:
箱号 箱型 名字
1 20 箱1
2 40 箱2
2 20 箱2
2 40 箱2
要求处理成的结果:
箱号 名字 20箱型数量 40箱型数量
1 箱1 1 0
2 箱2 2 1
*/
public class EquComp{
public static void main(String[] args){
List<Box> hs = new ArrayList<Box>();
hs.add(new Box("1","箱1","20"));
hs.add(new Box("3","箱2","40"));
hs.add(new Box("2","箱2","40"));
hs.add(new Box("2","箱2","20"));
hs.add(new Box("2","箱2","40"));
hs.add(new Box("2","箱2","40"));
List<Box> newStats = new EquComp().getBox(hs);
System.out.println("箱号--------名字--------20箱型数量--------40箱型数量");
for(Box s:newStats){
System.out.println(s.getBoxNo()+"------------"+ s.getBoxName()+"------------"+s.getCount20()+"----------------"+ s.getCount40());
}
}
public List<Box> getBox(List<Box> hs){
List<Box> boxList = new ArrayList<Box>();
boolean flag = false;
String boxType = "";
for (Box sta : hs) {
flag = false;
boxType = sta.getBoxType();
for (Box n : boxList) {
if (n.equals(sta)) {
if ("20".equals(boxType)) {
n.setCount20(n.getCount20()+1);
} else if ("40".equals(boxType)) {
n.setCount40(n.getCount40()+1);
}
flag = true;
break;
}
}
if (!flag) {
if ("20".equals(boxType)) {
sta.setCount20(1);
} else if ("40".equals(boxType)) {
sta.setCount40(1);
}
boxList.add(sta);
}
}
//通过程序进行排序
Collections.sort(boxList,new ComparableYS());
return boxList;
}
}
class ComparableYS implements Comparator{
public int compare(Object o1, Object o2){
Box s1 = (Box)o1;
Box s2 = (Box)o2;
//排序顺序 boxNo,boxName
if(!s1.getBoxNo().equals(s2.getBoxNo())){
return s1.getBoxNo().compareTo(s2.getBoxNo());
}else if(!s1.getBoxName().equals(s2.getBoxName())){
return s1.getBoxName().compareTo(s2.getBoxName());
}else{
return 0;
}
}
public boolean equals(Object o){
return false;
}
}
class Box{
private String boxNo;//箱号
private String boxType; //箱型
private String boxName;//名字
private int count_20;//箱型20数量
private int count_40;//箱型40数量
public void setCount40(int count_40){
this.count_40 = count_40;
}
public void setCount20(int count_20){
this.count_20 = count_20;
}
public int getCount20(){
return count_20;
}
public int getCount40(){
return count_40;
}
public Box(String boxNo,String boxName,String boxType){
this.boxNo = boxNo;
this.boxName = boxName;
this.boxType = boxType;
}
public String getBoxNo() {
return boxNo;
}
public void setBoxNo(String boxNo) {
this.boxNo = boxNo;
}
public String getBoxName() {
return boxName;
}
public void setBoxName(String boxName) {
this.boxName = boxName;
}
public String getBoxType() {
return boxType;
}
public void setBoxType(String boxType) {
this.boxType = boxType;
}
//判断是否是同一个箱子
public boolean equals(Object o){
Box s = (Box)o;
return s.getBoxNo().equals(boxNo)&& s.getBoxName().equals(boxName)?true:false;
}
}
注: 本示例是通过程序来控制的,问题:该问题应该可以通过sql语句来进行处理,首先把要统计的列根据某些条件进行列转行后,分组进行计数。
分享到:
相关推荐
4. **集合(Set)**:`delete_repetition=set(new_list)`利用集合的特性去除列表中的重复元素,创建一个不包含重复成绩的新集合。 5. **排序(Sorted)**:`in_order=sorted(delete_repetition)`对处理后的集合进行...
`map`是一种关联容器,用于存储键值对,按键排序且不允许重复。 #### 数据结构 ##### 树 **1. 基本知识** - **二叉树**:每个节点最多有两个子节点的树结构。 - **二叉搜索树(BST)**:左子树的所有节点都小于...
对sequence 按里面的对象的属性value进行排序 如: sequence里面放入的是10 个user对象,user对象里面包含name,age等属性 sequence?sort_by(name) 表示所有的user按user.name进行排序 hashes内置方法 hash?keys 返回...
实例057 用List集合传递学生信息 70 实例058 用TreeSet生成不重复自动排序 随机数组 71 实例059 Map映射集合实现省市级联选择框 73 第4章 字符串处理技术 75 4.1 格式化字符串 76 实例060 把数字格式化为货币字符串 ...
STL中的容器是存储元素的对象,如vector(动态数组)、list(双向链表)、deque(双端队列)、set(集合)、map(映射)等。每个容器都有其特定的内存管理和访问性能特性,程序员可以根据需求选择合适的容器类型。 ...
角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。 系统预定义角色 预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下面我们就简单介绍些系统角色: CONNECT...
**排序数据**可以根据一个或多个字段的值对结果集进行排序。 ##### 1. 单一字段排序 按单一字段排序: ```sql SELECT * FROM table_name ORDER BY column_name ASC; -- 或 DESC ``` ##### 2. 手动指定排序顺序 ...
除了基本的复杂类型函数之外,还可以使用其他函数对复杂类型进行更复杂的操作,如`concat`(连接数组)、`sort_array`(排序数组)等。 ### 2. 内置函数 #### 2.1 数学函数 数学函数提供了一系列基本的数学运算,...