java中,获取一个list,将list里的数据按不通条件进行分类

作者&投稿:方伊 (若有异议请与网页底部的电邮联系)
java中,获取一个list,将list里的数据按不通条件进行分类~

你查询的结果是的list里面每个记录应该是 一个Map 或 是一个类(如果有定义的话) 那么你 先新建一个List 再遍历结果list 每条记录 姓名和学期一致的记录放到一个 新Map中,在加到新的List里面 这样就形成你要的数据结构了

class LessonScore { //课程分数
private Long id; //ID,备用
private String name;//学生名
private int xueQi;//学期,用int方便比较
private String lesson;//课程名
private float score;//分数
public LessonScore(){ //无参数构造
}
public LessonScore(Long id,String name, String lesson, float score, int xueQi){//全参数构造方法
this.id = id;
this.name = name;
this.lesson = lesson;
this.score = score;
this.xueQi = xueQi;
}
//省了set/get方法



}



class Summary {
private Long id;
private String name;
private int xueQi;
private String yuWen;
private String scoreYuWen;
private String shuXue;
private String scoreShuXue;
private String yingYu;
private String scoreYingYu;
private float total;//总分

//get/set方法



}




public class TestScore{



public static void main(String[] args) {
List list=new ArrayList();//各科成绩
//添加课程、分数过程 略




List listSumm=new ArrayList();//学期总结
for(LessonScore le : list){
Summary summExist=null;
boolean bFound=false;
for(Summary summ : listSumm){
//根据学期和姓名判断是否已经存在



if( (le.getXueQi()==summ.getXueQi()) && (le.getName()==summ.getName())){
summExist = summ;
bFound=true;
break;
}
}
if(!bFound){
summExist = new Summary(); //不存在,就创建



summExist.setName(le.getName());
summExist.setXueQi(le.getXueQi());
}
if("语文".equals(le.getLesson())){ //是语文,就设置语文分数



summExist.setYuWen("语文");
summExist.setScoreYuWen(String.valueOf(le.getScore() ) );

}else if("数学".equals(le.getLesson())){ //是数学,就设置数学分数



summExist.setShuXue("数学");
summExist.setScoreShuXue(String.valueOf(le.getScore() ) );

}else if("英语".equals(le.getLesson())){ //是英语,就设置英语分数
summExist.setYingYu("英语");
summExist.setScoreYingYu(String.valueOf(le.getScore() ) );
}
if(!bFound){
listSumm.add(summExist);
}
summExist.setTotal( summExist.getTotal() + le.getScore() );
}
System.out.println(listSumm); //输出结果,重载了toString()方法



}
}

public static void main(String[] args) {
//初始化数据
List<String> allList = new ArrayList<String>();
allList.add("学生A、语文、90分、第一学期");
allList.add("学生B、语文、80分、第一学期");
allList.add("学生A、英语、90分、第一学期");
allList.add("学生A、数学、90分、第一学期");
allList.add("学生B、英语、80分、第一学期");
allList.add("学生A、语文、90分、第二学期");
allList.add("学生B、数学、80分、第一学期");
allList.add("学生B、英语、80分、第二学期");
allList.add("学生A、数学、90分、第二学期");
allList.add("学生B、语文、80分、第二学期");
//定义姓名、学期、科目 数组
List<String> stuList = new ArrayList<String>();
List<String> subjList = new ArrayList<String>();
List<String> termList = new ArrayList<String>();
boolean stuContained = false;
boolean subjContained = false;
boolean termContained = false;
//从allList中 加载相上述三个类别,如果固定的话,可以手动指定
for (String string : allList) {
String[] strs = string.split("、");
stuContained = false;
subjContained = false;
termContained = false;
if(stuList.size()<=0) stuContained = false;
else{
for (String string2 : stuList) {
if(string2.equals(strs[0])){
stuContained = true;
break;
}
}
}
if(!stuContained)
stuList.add(strs[0]);
if(subjList.size()<=0) subjContained = false;
else{
for (String string2 : subjList) {
if(string2.equals(strs[1])){
subjContained = true;
break;
}
}
}
if(!subjContained)
subjList.add(strs[1]);
if(termList.size()<=0) termContained = false;
else{
for (String string2 : termList) {
if(string2.equals(strs[3])){
termContained = true;
break;
}
}
}
if(!termContained)
termList.add(strs[3]);
}
//构建结果数组
List<String> results = new ArrayList<String>();
String temp = "";
for (String string : stuList) {
temp ="姓名:"+string;
for (String string2 : termList) {
temp += ",学期:"+string2;
int score = 0;
for (String string3 : subjList) {
temp+= ","+string3+":";
for (String string4 : allList) {
String[] temps = string4.split("、");
if(temps[0].equals(string) && temps[1].equals(string3)&& temps[3].equals(string2)){
temp+= temps[2];
score += Integer.parseInt(temps[2].substring(0, temps[2].length()-1));
}
}
}
String[] temp2 = temp.split(",");
temp += ",总分:" + score +"分";
results.add(temp);
temp ="姓名:"+string;
}
}
//输出结果
for (String string : results) {
System.out.println(string);
}
}

只是一种方案,又很多情况不确定,如果list中的数据可以作为javabean设置会方便些,如果数据是在数据库中的,那么使用sql语句会方便很多(上面的做法实际上是模拟了sql语句)

class LessonScore { //课程分数
private Long id; //ID,备用
private String name;//学生名
private int xueQi;//学期,用int方便比较
private String lesson;//课程名
private float score;//分数
public LessonScore(){ //无参数构造
}
public LessonScore(Long id,String name, String lesson, float score, int xueQi){//全参数构造方法
this.id = id;
this.name = name;
this.lesson = lesson;
this.score = score;
this.xueQi = xueQi;
}
//省了set/get方法

}

class Summary {
private Long id;
private String name;
private int xueQi;
private String yuWen;
private String scoreYuWen;
private String shuXue;
private String scoreShuXue;
private String yingYu;
private String scoreYingYu;
private float total;//总分

//get/set方法

}

public class TestScore{

public static void main(String[] args) {
List list=new ArrayList();//各科成绩
//添加课程、分数过程 略

List listSumm=new ArrayList();//学期总结
for(LessonScore le : list){
Summary summExist=null;
boolean bFound=false;
for(Summary summ : listSumm){
//根据学期和姓名判断是否已经存在

if( (le.getXueQi()==summ.getXueQi()) && (le.getName()==summ.getName())){
summExist = summ;
bFound=true;
break;
}
}
if(!bFound){
summExist = new Summary(); //不存在,就创建

summExist.setName(le.getName());
summExist.setXueQi(le.getXueQi());
}
if("语文".equals(le.getLesson())){ //是语文,就设置语文分数

summExist.setYuWen("语文");
summExist.setScoreYuWen(String.valueOf(le.getScore() ) );

}else if("数学".equals(le.getLesson())){ //是数学,就设置数学分数

summExist.setShuXue("数学");
summExist.setScoreShuXue(String.valueOf(le.getScore() ) );

}else if("英语".equals(le.getLesson())){ //是英语,就设置英语分数
summExist.setYingYu("英语");
summExist.setScoreYingYu(String.valueOf(le.getScore() ) );
}
if(!bFound){
listSumm.add(summExist);
}
summExist.setTotal( summExist.getTotal() + le.getScore() );
}
System.out.println(listSumm); //输出结果,重载了toString()方法

}
}

List中的每个元素是一个学生对象,还是{学生B、英语、80分、第二学期} 这样一个字符串

只能说,从你拿到这个查询结果的时候,你就走上一条不归路。

只能是把原来的list遍历,然后根据条件比对来进行分装.


如何通过HttpPost从服务器上获得一个sessionid
在创建Client工程前可以将Server工程运行起来,从Server工程的HelloServerService.wsdl文件中找到,这个地址会在接下来使用得到。在Client工程中新建一个Web Service Client,填入刚才的地址加入”?WSDL”,生成Web Service所需的类。(七)创建Client类用来发起请求与Server通信 public class HelloClient { priva...

ava中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop...
调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该...

ava战地之王 怎么打才能获取更多的Gp币
很高兴为你回答问题 如果不想刷的话 你可以这么做 无论哪种模式 1.队长的分 一般都会高(因为望远镜的关系 可以给你加分的)2.做每日任务 这个会比较高 3.获得游戏里的勋章(比如击杀王牌 一雷多杀等)4.获得游戏里的技能奖励 5.可以消费A点(但是花银子)分别说下各个模式 战车模式 多炸车 ...

A.V.A官网是什么?
A.V.A官网是《战地之王》的官方网站。《战地之王》(英文简称AVA)是由韩国Redduck公司开发、韩国Neowiz公司全球发行,以近现代史实为基础的第一人称射击网游。中国由腾讯游戏代理运营,于2010年3月24日正式公测。游戏主要讲述的是希望能够使用枪械来打击犯罪行为的特种警察部队“Black Lion”(...

ava哪个区人多
3.活动与时段影响: 如果AVA是一个在线游戏或其他虚拟空间的区域,玩家数量还可能受到游戏更新、特殊活动的影响而发生变化。在某些时段或特定活动下,某些区域可能会聚集大量玩家。了解这些信息有助于判断哪个区域人数较多。由于问题的模糊性,无法给出具体答案。若要获取准确信息,请提供更多关于AVA的背景信息...

JAVA成绩分为ABCDE五个等级,请算出一个有10个元素的int数组当中各成绩...
好的,假设这个10个元素的int数组叫做`avaScores`,我们可以定义每个等级的人数,然后将它们存储到数组中。为了方便起见,我们将A、B、C、D、E分别表示为0、1、2、3、4。那么可以这样计算:```java \/\/ 初始化分数数组 int[] avaScores = new int[5];\/\/ 假设有50个人,分别得到ABCDEDABCEEEDCC...

用惠普笔记本dv3玩ava用什么键获取游戏截图?
很简单,所有电脑都试着一个键___屏幕截图 但在ava等游戏中,你可以设置

OpenXava版本发布
集合中的AJAX性能也得到了显著提升,同时优化了@OnSelectElementAction的性能,使其在特定场景下运行得更快。新加入的XArrays通用类和custom.css的易用性定义,展示了OpenXava对细节的把控。最后,在2012年11月24日,OpenXava又发布了一个重要版本——4.6,继续强化其Web快速开发套件的功能。这次的更新...

ava除通关外有别的方法得永久刀吗
楼主你好!连续玩死亡峡谷挑战十次以上,不用通关,不用吃箱子。有一定机率获得永久刀,永久面具。

我家的AVA下好后 提取战地之王客户端资源 到了100%后就没了。怎么回事...
的等号后面什幺没有发现的路径和文件名不是你熟悉的启动文件,一般情况下,您的电脑可能中上“木马”。当然,你必须要仔细看看,因为有很多的“木马”,如“AOL Trojan木马”,它伪装成command.exe文件,如果不注意可能不会发现它不是一个真正的系统启动文件。在system.ini文件中[BOOT]下面的“shell =...

揭东县18255388039: java中,获取一个list,将list里的数据按不通条件进行分类 -
藏何邦莱: 你查询的结果是的list里面每个记录应该是 一个Map 或 是一个类(如果有定义的话) 那么你 先新建一个List 再遍历结果list 每条记录 姓名和学期一致的记录放到一个 新Map中,在加到新的List里面 这样就形成你要的数据结构了

揭东县18255388039: java怎么获取json中的list -
藏何邦莱: 可以使用三种方式,用json接收一个list,方法如下: 1、使用org.json.JSONArray包:JSONArray json = new JSONArray();for(User u : list){JSONObject jo = new JSONObject();jo.put("id", u.getId());jo.put("title", u.getName());json.put(jo); ...

揭东县18255388039: java中如何获取list的id -
藏何邦莱: list.get(i).getId();

揭东县18255388039: JAVA中的List的使用 -
藏何邦莱: List([]内的内容可省略),与数组类似: 实例化:List[] list = new ArrayList[](); 获得集合内元素个数:list.size(); 添加元素: 默认添加:list.add(e); 指定下标添加(添加后下标后的元素向后挪一位):list.add(index,e); 删除元素: 返回是...

揭东县18255388039: java对象,如何将一个list集合 -
藏何邦莱: 代码如下:import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; class Music { private int id; private String name; private String singer; public Music(int id, String name, String singer) { ...

揭东县18255388039: Java中怎样将从类中获取来的list传到下一个类中?下一个类又该如何获取? -
藏何邦莱: 如果是想要在下一个类中获得相同的list,建议直接将list绑定到seesion上,这样到那个类都能取到.HttpSession hs=request.getSession(true);hs.setAttribute("list1",list);然后想拿的时候直接从ssesion中拿出来就行.

揭东县18255388039: java如何从List中取值 -
藏何邦莱: 如果是在同一个类里: List<String> pointList = generatePonits(); pointList.get(0); //获取第1个,以此类推

揭东县18255388039: java中,比如说我想在页面得到一个类list,一般会写getset方法,如果我直接把得到的值卸载get方法里好吗? -
藏何邦莱: 你的意思是不是 class b{ ArrayList li=null; public ArrayList getLi(){ li=new ArrayList(); return li; } }这样写,这样写是不安全的因为你每次用get得到都是一个新的ArrayList,就起不到传递数据的作用了.你先get到一个新list然后存数据,再用同样一个对象的get方法再次获取list,得到的不是存了数据的list而是一个size=0的新的list.

揭东县18255388039: 编写一个java程序时,List l = (List) s 是什么意思?为什么要用括号把List括起来? -
藏何邦莱: 括号括起来代表强制转换类型的意思,你变量s开始的类型是Displayable,因为你要使用List里面的方法,所以要强制转换成List接口类型,使用强转的前提是对象本身就是这类型.

揭东县18255388039: Java如何将List 赋值到数组 -
藏何邦莱: List提供了toArray()的方法,可以将list转换成数组.但是要使用不好,就会有ClassCastException List list = new ArrayList(); list.add(new Long(1)); list.add(new Long(2)); list.add(new Long(3)); list.add(new Long(4)); Long[] l = (Long[])list.toArray()...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网