list分别取出相同的元素

淘气包丶 2019-12-18 04:06:48
一个list存放这样的数据
[{"id":1,"name":张三},{"id":2,"name":李四},{"id":1,"name":李宁},{"id":3,"name":王某},{"id":2,"name":陈某}]

Student对象

public class Student {

private int id;
private String name;

public int getId(){
return id;
}

public void setId(int id){
this.id=id;
}

public String getName(){
return name;
}

public void setName(String name){
this.name=name;
}
}

List<Student> students = new ArrayList<Student>();
Student stu1 = new Student("1", "张三");
Student stu2 = new Student("2", "李四");
Student stu3 = new Student("1", "李宁");
Student stu4 = new Student("3", "王某");
Student stu5 = new Student("2", "陈某");
students.add(stu1);
students.add(stu2);
students.add(stu3);
students.add(stu4);
students.add(stu5);

新建一个list用于存放id相同的元素
for (int i = 0; i < students.length; i++) {
List<Student> list=new ArrayList<Student>(); //用于存放id相同的元素
}

大概取出来的list是这样的

第一个list
[{"id":1,"name":张三},{"id":1,"name":李宁},]
第二个list
[{"id":2,"name":李四},{"id":2,"name":陈某}]
第三个list
[{"id":3,"name":王某}]
...全文
370 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Code ink 2019-12-19
  • 打赏
  • 举报
回复 1
qq_45916051 2019-12-18
  • 打赏
  • 举报
回复
groupteam : function(arr){ var map = {}, dest = []; for(var i = 0; i < arr.length; i++) { var ai = arr[i]; if(!map[ai.usercode]) { //依赖分组字段可自行更改! dest.push({ usercode: ai.usercode, //依赖分组字段可自行更改! data: [ai] }); map[ai.usercode] = ai; //依赖分组字段可自行更改! } else { for(var j = 0; j < dest.length; j++) { var dj = dest[j]; if(dj.usercode == ai.usercode) { //依赖分组字段可自行更改! dj.data.push(ai); break; } } } } return dest; },
qybao 2019-12-18
  • 打赏
  • 举报
回复
if (s.getStudentNo().equals(ss.getStudentNo())) 改成 if (s.getId().equals(ss.getId()))
qybao 2019-12-18
  • 打赏
  • 举报
回复 1
之前的方法改一下就可以了

List<List<Student>> result = new ArrayList<>(); //最终结果集
for (Student ss : students) { //遍历students
boolean found = false;
for (int j=0; j<result.size(); j++) {
Student s = result.get(j).get(0);
if (s.getStudentNo().equals(ss.getStudentNo())) { //如果学号
found = true;
result.get(j).add(ss); //放到同一个组
break;
}
}
if (! found) { //如果没有相同的组,则新做成一个组
List<Student> l = new ArrayList<>();
l.add(ss);
result.add(l);
}
}
qq_39936465 2019-12-18
  • 打赏
  • 举报
回复
引用 楼主 guttaoqibao 的回复:
一个list存放这样的数据

public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<Student> students = new ArrayList<Student>();
        Student stu1 = new Student("1", "张三");
        Student stu2 = new Student("2", "李四");
        Student stu3 = new Student("1", "李宁");
        Student stu4 = new Student("3", "王某");
        Student stu5 = new Student("2", "陈某");
        students.add(stu1);
        students.add(stu2);
        students.add(stu3);
        students.add(stu4);
        students.add(stu5);
        sort(students);
	}
	static void sort (List<Student> stus) {
		List<Student> list=new ArrayList<Student>();
		for(int i=0;i<stus.size();i++) {
			if(list.size()==0) {
				list.add(stus.get(i));
				stus.remove(i);
			}else if (stus.get(i).getStudentNo().equals(list.get(0).getStudentNo())) {
				list.add(stus.get(i));
				stus.remove(i);
			}
		}
		System.out.println(list);
		if(stus.size()>0l) {
			sort(stus);
		}
	}


public class Student {
	private String id;
	private String name;

	
	public Student(String studentNo, String name) {
		super();
		this.id = studentNo;
		this.name = name;
	
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getStudentNo() {
		return id;
	}
	public void setStudentNo(String studentNo) {
		this.id = studentNo;
	}
	
	@Override
	public String toString() {
		return "{ \" id\":" + id + ", \"name\":" + name + "}";
	}

}

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧