首页 > 编程知识 正文

遍历一个map集合有几种方式(遍历map集合里面的table)

时间:2023-05-04 23:07:12 阅读:89124 作者:3710

需求

当前,必须返回student表和class表中的所有数据。 如果有关联的条件,则为class_id。 如果可以用sql简单实现,直接连接表查询就可以了,但是现在项目是微服务器,不能连接表查询了,所以必须在代码中修改。

定义三个类、student类、class类和返回所有数据的studentAndClass类。

导入Java.util .数组列表;

导入Java.util .列表;

公共类辅助工具

私有整合者id;

私有字符串名称;

公共集成电路

返回身份;

}

公共语音集(集成id ) {

this.id=id身份;

}

公共字符串通用名称

返回名称;

}

公共语音集名称(字符串名称) {

this.name=名称;

}

公共集成器获取类(

返回类;

}

公共语音设置类(集成类) {

this.classId=classId;

}

私有集成器类;

公共辅助(集成id、字符串名称、集成类)。

this.id=id身份;

this.name=名称;

this.classId=classId;

}

@Override

公共字符串字符串

返回超级.字符串(;

}

}

//*

* Created by郝雨这边on 2019/12/2。

*/

公共类{2}

私有集成器类;

私有字符串类名称;

公共集成器获取类(

返回类;

}

公共语音设置类(集成类) {

this.classId=classId;

}

公共字符串获取类名称(

返回类名;

}

公共类别名称(字符串类别名称)。

this .类名=类名;

}

公共类(集成类,字符串类名称)

this.classId=classId;

this .类名=类名;

}

@Override

公共字符串字符串

返回超级.字符串(;

}

}

数据的组装代码如下

导入Java.util .数组列表;

导入Java.util .列表;

公共类主

publicstaticvoidmain (字符串[ ]数组) {

liststudentstudentlist=新阵列列表(;

student student=新student (1,'小明',1 );

student student1=新student (2,'小红',2 );

辅助列表.添加(辅助);

sudentlist.add(student1;

列出类类类

ist = new ArrayList<>();

Class cl = new Class(1,"1班");

Class c2 = new Class(2,"2班");

classList.add(cl);

classList.add(c2);

List<StudentAndClass> list = new ArrayList<>();

for (Student studentArray : studentList) {

for (Class aClass : classList) {

if(studentArray.getClassId().equals(aClass.getClassId())){

StudentAndClass studentAndClass = new StudentAndClass();

studentAndClass.setClassId(studentArray.getClassId());

studentAndClass.setClassName(aClass.getClassName());

studentAndClass.setId(studentArray.getId());

studentAndClass.setName(studentArray.getName());

list.add(studentAndClass);

}

}

}

}

}

双层for循环,此时时间复杂度是n2.

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class Main {

public static void main(String[] args) {

List<Student> studentList = new ArrayList<>();

Student student = new Student(1,"小明",1);

Student student1= new Student(2,"小红",2);

studentList.add(student);

studentList.add(student1);

List<Class> classList = new ArrayList<>();

Class cl = new Class(1,"1班");

Class c2 = new Class(2,"2班");

classList.add(cl);

classList.add(c2);

// list 转成map,map存放的是key和value的映射关系

Map<Integer,Class> map = new HashMap<>();

for (Class aClass : classList) {

map.put(aClass.getClassId(),aClass);

}

List<StudentAndClass> list = new ArrayList<>();

if(studentList.size()>0){

for (Student studentArray : studentList) {

Class c1= map.get(studentArray.getClassId());

if(c1!=null){

StudentAndClass studentAndClass = new StudentAndClass();

studentAndClass.setClassId(studentArray.getClassId());

studentAndClass.setClassName(c1.getClassName());

studentAndClass.setId(studentArray.getId());

studentAndClass.setName(studentArray.getName());

list.add(studentAndClass);

}

}

}

}

将其中一个list转成map之后就成了并列for循环。此时时间复杂度成了n。

lamda表达式解决list转map问题更加方便了,一句代码解决三句代码才解决的问题。

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import java.util.stream.Collectors;

public class Main {

public static void main(String[] args) {

List<Student> studentList = new ArrayList<>();

Student student = new Student(1,"小明",1);

Student student1= new Student(2,"小红",2);

studentList.add(student);

studentList.add(student1);

List<Class> classList = new ArrayList<>();

Class cl = new Class(1,"1班");

Class c2 = new Class(2,"2班");

classList.add(cl);

classList.add(c2);

// list 转成map,map存放的是key和value的映射关系

// Map<Integer,Class> map = new HashMap<>();

// for (Class aClass : classList) {

// map.put(aClass.getClassId(),aClass);

// }

Map<Integer, Class> map = classList.stream().collect(Collectors.toMap(Class::getClassId, e -> e));

List<StudentAndClass> list = new ArrayList<>();

if(studentList.size()>0){

for (Student studentArray : studentList) {

Class c1= map.get(studentArray.getClassId());

if(c1!=null){

StudentAndClass studentAndClass = new StudentAndClass();

studentAndClass.setClassId(studentArray.getClassId());

studentAndClass.setClassName(c1.getClassName());

studentAndClass.setId(studentArray.getId());

studentAndClass.setName(studentArray.getName());

list.add(studentAndClass);

}

}

}

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。