有实体类CxCadreSituationDTO,其中有属性orgType,现在有一个CxCadreSituationDTO对象列表,将对象列表按照orgType顺序为{2,3,1}的数序排序
时间: 2023-12-10 10:37:16 浏览: 32
可以使用Java8的Stream API来实现按照orgType排序的功能,代码如下:
```
List<CxCadreSituationDTO> dtoList = ... // 初始化CxCadreSituationDTO对象列表
List<Integer> orderList = Arrays.asList(2, 3, 1); // 定义orgType顺序列表
List<CxCadreSituationDTO> sortedList = dtoList.stream()
.sorted(Comparator.comparingInt(dto -> orderList.indexOf(dto.getOrgType())))
.collect(Collectors.toList());
// sortedList即为按照orgType顺序排序后的CxCadreSituationDTO对象列表
```
上述代码中,首先使用Stream的sorted方法,传入一个Comparator对象作为排序规则。这里使用Java8的Lambda表达式,将Comparator.comparingInt方法的参数改为一个Lambda表达式,用于返回CxCadreSituationDTO对象的orgType在orderList中的位置,然后通过indexOf方法获取该位置,从而实现按照orgType顺序排序的功能。最后使用Stream的collect方法转换为List集合即可。
相关问题
有实体类CxCadreSituationDTO,其中有属性orgType和estab,现在有一个CxCadreSituationDTO对象列表,将对象列表按照orgType顺序为{2,3,1}的顺序排序,estab升序排序
可以使用Java的Comparator来实现这个排序逻辑。
首先,定义一个实现Comparator接口的类,重写compare方法:
```java
import java.util.Comparator;
public class CxCadreSituationComparator implements Comparator<CxCadreSituationDTO> {
@Override
public int compare(CxCadreSituationDTO o1, CxCadreSituationDTO o2) {
int orgType1 = o1.getOrgType();
int orgType2 = o2.getOrgType();
// 比较orgType
if (orgType1 != orgType2) {
if (orgType1 == 2) {
return -1;
} else if (orgType1 == 3) {
if (orgType2 == 2) {
return 1;
} else {
return -1;
}
} else if (orgType1 == 1) {
return 1;
}
}
// 如果orgType相同,比较estab
int estab1 = o1.getEstab();
int estab2 = o2.getEstab();
return Integer.compare(estab1, estab2);
}
}
```
在compare方法中,首先比较orgType的大小,按照{2,3,1}的顺序排列。如果orgType相同,则比较estab的大小,按照estab升序排列。
然后,在排序时使用这个Comparator:
```java
List<CxCadreSituationDTO> list = new ArrayList<>();
// ... 添加元素
Collections.sort(list, new CxCadreSituationComparator());
```
这样,就可以按照要求的顺序和方式对CxCadreSituationDTO对象列表进行排序了。
mybatis查询参数是一个实体类,这个对象有一个属性是List,foreach应该怎么写
如果你想使用 MyBatis 的 foreach 标签来遍历这个 List 属性,你可以这样写:
```xml
<select id="selectByList" parameterType="com.example.Entity">
SELECT * FROM table_name WHERE column_name IN
<foreach item="item" index="index" collection="listProperty" open="(" separator="," close=")">
#{item}
</foreach>
</select>
```
其中,`com.example.Entity` 是你的实体类,`listProperty` 是这个实体类中的 List 属性名,`#{item}` 是你要查询的参数。在这个例子中,MyBatis 会将 List 属性中的每个元素作为参数传入 SQL 语句中的 `IN` 子句中。