正在找工作或者是刚实习的同学或许会发现,java中的List和Map是一个常常被问到的知识点,而他们出现的频率一致非常高,很多在校的小伙伴不明白,同样是java的基础,为什么List和Map为何被问的如此频繁?
下面我们一起来谈谈!
求求你别再写public void XXX()还有public String XXX()之类的函数了
相信很多人在写函数或者说是接口的时候总是喜欢用int、String、或者是void之类的返回值,当然并不是说这些函数是有错的,很多时候需要这些返回值的时候我们需要这样写,但是如果是在Controller中和前端交互的接口,我们更多的是把接口的返回值类型进行自定义Result或者是直接返回Object,为什么这样做?因为很多情况下前台需要的数据应该是结构化的或者说是对象化的。
我们来瞅一段代码
controller层:
@GetMapping("/getBookMsg")
public Object getBookMsg(){
return bookService.getBookMsg();
}
service层:
public Object getBookMsg(){
//查询book表中的信息以list形式返回
List<Map<String,Object>> list = bookDao.getBookMsg();
for(Map m : list){
String key = (String) m.get("author");
String value = (String) m.get("bookname");
stringRedisTemplate.boundListOps(key).rightPush(value);
List redislist = stringRedisTemplate.boundListOps(key).range(0, 10);
System.out.println("fromRedis--->"+redislist);
}
System.out.println(list);
//list设置为json格式
JSONArray jsonObject = new JSONArray(list);
FileWriter fw = null;
try {
fw = new FileWriter(new File(System.getProperty("user.dir") + "\\src\\main\\resources\\BookMsg.json"));
BufferedWriter bw = new BufferedWriter(fw);
bw.write(jsonObject.toString());
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
Dao层:
public List<Map<String, Object>> getBookMsg(){
String sSQL = "SELECT bookname,author FROM t_book ";
return jdbcTemplate.queryForList(sSQL);
}
很多时候,前端所需要的数据应该是以“组”的形式的,比如从数据库中查询的一类数据放到一个Object,或者是同一用户的不同数据放到一个Object提交给前端。这时候操作对象的时候,你会发现Map和List是最方便的,也是在实际情况中使用最多的。
1.灵活性
Map和List提供了方便的对于数据的操作接口,同时对于数据的存储有着很好的性能。
2.前后端数据交互的方便性
前端后端数据的交互可以说是系统中很重要的一部分,但是如果只是以一个字符串的形式去做数据的传递,在很多情况下是不切实际的,我们需要后端能够一次性提供多个数据作为一个对象或者一组对象,这时Map和List是方便有效的。
3.集成了很多操作函数
List和Map下众多的接口、函数使得对于数据的操作遍历更加的方便。同时我们可以发现,Map和List中的数据在于json做交互的时候也更加的方便。
总之,因为Map和List的方便性、有效性,使得他在后端的数据接收领域使用非常广泛,它自然而然也成了面试官的最爱。
入职后你也会发现,在写后台接口的时候HashMap和LinkedList使用是非常多的!