文章标题
来源:互联网 发布:200w数据查20w 编辑:程序博客网 时间:2024/06/05 14:26
分拣存储(Java)
应用场景 :
- 将一堆数据依据某一个属性进行分类存储的情况 .
例子 :
C语言中统计一串英文字母当中出现的字母的个数 , 并输出
代码如下,就是体现了分拣存储的概念
#include <stdio.h>#include <string.h> int main(){ char * array = "adhasjkd , hajsdasjdasdasfdafasd"; int result[128]={0}; int i; //统计 for(i=0;i<strlen(array);i++){ result[array[i]]++; } //输出 for(i=0;i<127;i++){ if(result[i]!=0){ printf("%c ---> %d\n",i,result[i]); } } return 0; }
面向对象中使用分拣存储
在Java中使用就可以使用容器来完成
例子如下 :
有一份学生信息表 , 表中学生有班级之分 , 有姓名和分数属性
现将学生按照班级存储 , 并且输出各个班的平均分 和 班级名单
显然上述例子需要使用分拣存储 , 分类的依据是班级的编号
代码如下 :
实体类 :
package club.dohacker.entity;public class Letter { private String key; private int count; public Letter(String key){ this.key = key; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public int getCount() { return count; } public void setCount(int count) { this.count = count; }}
package club.dohacker.entity;public class Student { private int num; private String name; private double fenshu;public Student(int num,String name,double fenshu){ this.num = num; this.name = name; this.fenshu = fenshu;}public int getNum() { return num;}public void setNum(int num) { this.num = num;}public String getName() { return name;}public void setName(String name) { this.name = name;}public double getFenshu() { return fenshu;}public void setFenshu(double fenshu) { this.fenshu = fenshu;}}
测试代码如下 :
package club.dohacker.test;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import club.dohacker.entity.Class;import club.dohacker.entity.Student;public class Test2 { public static void main(String[] args) { List<Student> list = new ArrayList<Student>(); list.add(new Student(1,"张三",90.0)); list.add(new Student(1,"李四",90.0)); list.add(new Student(2,"王五",90.0)); list.add(new Student(1,"陈六",90.0)); list.add(new Student(3,"赵七",90.0)); Map<Integer,Class> map = new HashMap<Integer,Class>(); //开始分拣存储 for(int i=0;i<list.size();i++){ //判断其中是否包含班级信息 if(map.get(list.get(i).getNum()) != null){ Class temp = map.get(list.get(i).getNum()); temp.setCount(temp.getCount()+1); temp.setZongfen(temp.getZongfen()+list.get(i).getFenshu()); List<Student> list_temp = temp.getList(); list_temp.add(list.get(i)); }else{ //创建班级 Class temp = new Class(list.get(i).getNum()); temp.setNum(list.get(i).getNum()); temp.setCount(temp.getCount()+1); temp.setZongfen(temp.getZongfen()+list.get(i).getFenshu()); List<Student> list_temp = temp.getList(); list_temp.add(list.get(i)); map.put(list.get(i).getNum(), temp); } } //输出班级的信息 Set<Integer> set = map.keySet(); Iterator<Integer> ite = set.iterator(); while(ite.hasNext()){ Class c = map.get(ite.next()); System.out.println("班级"+c.getNum()+"总人数 :"+c.getCount()+"班级总分 :"+c.getZongfen()); for(Student stu : c.getList()){ System.out.println(stu.getName()+" "+stu.getFenshu()); } //输出平均分 System.out.println("班级平均分 : "+c.getZongfen()/c.getCount()); System.out.println("========================================"); } }}
阅读全文
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- (整理汇总)Spring中ClassPathXmlApplicationContext类的简单使用
- easyui 页面跳转进入新页面再返回当前页面
- 一个存有悖论的世界
- Maven生成可以直接运行的jar包的多种方式
- 关于二项式定理,偶数项和的求解方法。
- 文章标题
- 链表总结
- Git中三种文件状态及其转换
- Unity Cinemachine插件学习笔记,结合Timeline实现简单场景动画
- android表格切换TabLayout简单使用
- 性能压测诡异的Requests/second 响应刺尖问题
- Android撒花效果
- 编译php报错cc: 编译器内部错误:已杀死(程序 cc1) Please submit a full bug report, with preprocessed source if appropri
- B树的B是什么意思, 我来BB一下