Springboot接收web前端传送的请求对象实体类,该实体类有一个属性的类型是ArrayList<Long>,如何才能使该值不出现精度误差
时间: 2024-05-23 07:15:04 浏览: 50
首先,精度误差在实体类的定义上不应该出现。ArrayList<Long>表示一个long类型的数组列表,long类型的整数在Java中使用64位二进制表示,所以不会存在精度误差问题。如果您需要将其转换为字符串类型进行传输,建议使用JSON格式来转换,以保持数据的准确性和精度。同时,可以通过指定数字格式化方式,强制保留完整的精度,例如使用 DecimalFormat 类。
相关问题
如何把一个集合的数据 根据父级id 分类为Map<Long,Liset<User>>
你可以使用Java 8的Stream API来实现这个功能。具体的实现方法如下所示:
```java
public Map<Long, List<User>> groupByParentId(List<User> users) {
return users.stream()
.collect(Collectors.groupingBy(User::getParentId));
}
```
其中,`User`是代表用户的实体类,包含`id`和`parentId`两个属性。`groupByParentId`方法接收一个`List<User>`类型的参数,返回一个`Map<Long, List<User>>`类型的结果。`collect`方法结合`groupingBy`方法可以实现按照`User`对象的`parentId`属性进行分组,并且将分组结果存储到`Map`中返回。
需要注意的是,如果某个`User`对象的`parentId`属性为`null`,那么它会被分到`Map`中的`null`键对应的列表中。如果你希望将这些对象分到其他键对应的列表中,可以使用`groupingBy`方法的第二个参数指定一个默认的键。例如,你可以使用下面的代码将所有`parentId`为`null`的对象分到`-1`键对应的列表中:
```java
public Map<Long, List<User>> groupByParentId(List<User> users) {
return users.stream()
.collect(Collectors.groupingBy(User::getParentId, Collectors.toList(), () -> new HashMap<Long, List<User>>(){{put(-1L, new ArrayList<>());}}));
}
```
这里使用了一个匿名内部类来创建一个只包含`-1`键对应的空列表的`HashMap`对象,并将其作为第三个参数传递给`groupingBy`方法。
1.编写一个 Entity 实体类、表示所有实体的父类、并提供 id , createTime , updateTime 属性、 2.编写一个 User 实体类、继承Entity, 包含 用户名、密码、出生日期、手机号 等属性, 提示: 子类上使用 @SuperBuilder(toBuilder=true) 可以继承建造父类中的属性 父类上使用 @SuperBuilder 替代 @Builder 3.编写一个 BaseDao<T extends Entity> 接口, 提供 save(T entity)、 update(T entity) 、 removeById(Long id) 、 findById(Long id) 、 findAll() 方法 4.编写 BaseDaoImpl<T> 继承 BaseDao 接口、并完成对应方法的使用 (1)要求 BaseDao中,使用 List 作为数据存储的容器 5.编写一个 UserDao 接口、继承 BaseDao<User> 接口 、并提供如下方法 (1)User findUserByUsername(String username) : 根据用户名查找用户 (2)List<User> findAllOrderByBirthDesc() : 查找所有用户并按照生日降序排列
1. Entity 实体类
```java
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder(toBuilder=true)
public class Entity {
private Long id;
private Date createTime;
private Date updateTime;
}
```
2. User 实体类
```java
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class User extends Entity{
private String username;
private String password;
private Date birthDate;
private String phoneNumber;
}
```
3. BaseDao 接口
```java
import java.util.List;
public interface BaseDao<T extends Entity> {
void save(T entity);
void update(T entity);
void removeById(Long id);
T findById(Long id);
List<T> findAll();
}
```
4. BaseDaoImpl 实现类
```java
import java.util.ArrayList;
import java.util.List;
public class BaseDaoImpl<T extends Entity> implements BaseDao<T>{
private List<T> list = new ArrayList<>();
@Override
public void save(T entity) {
list.add(entity);
}
@Override
public void update(T entity) {
int index = -1;
for(int i=0;i<list.size();i++){
if(list.get(i).getId().equals(entity.getId())){
index = i;
break;
}
}
if(index != -1){
list.set(index,entity);
}
}
@Override
public void removeById(Long id) {
T entity = findById(id);
if(entity != null){
list.remove(entity);
}
}
@Override
public T findById(Long id) {
for(T entity : list){
if(entity.getId().equals(id)){
return entity;
}
}
return null;
}
@Override
public List<T> findAll() {
return list;
}
}
```
5. UserDao 接口
```java
import java.util.List;
public interface UserDao extends BaseDao<User> {
User findUserByUsername(String username);
List<User> findAllOrderByBirthDesc();
}
```
```java
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao{
@Override
public User findUserByUsername(String username) {
for(User user : findAll()){
if(user.getUsername().equals(username)){
return user;
}
}
return null;
}
@Override
public List<User> findAllOrderByBirthDesc() {
return findAll().stream()
.sorted(Comparator.comparing(User::getBirthDate).reversed())
.collect(Collectors.toList());
}
}
```
阅读全文