现有一个List<ActiveGoodsModel> ActiveGoodsModel中有个activeId字段 需要按activeId去重
时间: 2024-03-15 16:47:29 浏览: 15
你可以使用 Java 8 中的 Stream API 来解决这个问题。具体代码如下:
```java
List<ActiveGoodsModel> distinctList = activeGoodsList.stream()
.collect(Collectors.groupingBy(ActiveGoodsModel::getActiveId))
.values()
.stream()
.map(list -> list.get(0))
.collect(Collectors.toList());
```
这段代码的意思是先使用 `groupingBy` 方法按 `activeId` 字段进行分组,然后再取出每个分组的第一个元素,从而保证了按 `activeId` 去重。最后将去重后的元素收集到一个新的列表中。
相关问题
<div class="container" style="margin-top: 10px"> <div class="row" style="margin-bottom: 20px; border-bottom: 1px solid #ccc"> <div class="col-md-12" v-for="item in classify" :key="item.id" style="padding: 10px;"> <div class="col-md-2"> <b>{{item.name}}</b> </div> <div class="col-md-10" style="color: #666"> <span v-for="subItem in item.subList" style="margin-left: 30px; cursor: pointer;" :key="subItem.id" :class="{active: subItem.id === activeId}" @click="handleClickClassify(subItem.id)"> {{subItem.name}} </span> </div> </div> </div>
这是一个基于 Vue.js 框架的代码,用于生成一个分类菜单。其中,v-for 指令用于循环遍历 classify 数组中的每个元素,生成多个具有相同结构的分类块。在每个分类块中,col-md-2 用于设置名称的列宽,col-md-10 则用于显示子分类列表。在子分类列表中,使用 v-for 指令循环遍历 subList 数组中的每个元素,生成多个具有相同样式的分类项。通过 @click 事件监听器,可以在用户点击分类项时触发 handleClickClassify 方法,从而实现分类菜单的交互功能。
vant创建一个树选择父级时默认勾选父级下的子级
可以使用vant的TreeSelect组件,在设置v-model绑定值时,将父级和子级的id都存储在同一个数组中,然后在渲染树节点时,判断当前节点id是否在已选中的数组中,如果是,则默认勾选该节点,并递归勾选其所有子节点。
示例代码如下:
```
<template>
<van-tree-select
v-model="selected"
:items="treeData"
:main-active-index="mainActiveIndex"
:active-id="activeId"
@click-nav="onClickNav"
@click-item="onClickItem"
/>
</template>
<script>
export default {
data() {
return {
treeData: [
{
text: '父级1',
id: 1,
children: [
{ text: '子级1-1', id: 11 },
{ text: '子级1-2', id: 12 },
{ text: '子级1-3', id: 13 },
],
},
{
text: '父级2',
id: 2,
children: [
{ text: '子级2-1', id: 21 },
{ text: '子级2-2', id: 22 },
{ text: '子级2-3', id: 23 },
],
},
],
selected: [11, 2], // 已选中的节点id数组
mainActiveIndex: 0,
activeId: 1,
};
},
methods: {
// 点击导航栏事件
onClickNav({ index }) {
this.mainActiveIndex = index;
},
// 点击树节点事件
onClickItem({ item }) {
const index = this.selected.indexOf(item.id);
if (index > -1) {
this.selected.splice(index, 1);
} else {
this.selected.push(item.id);
}
},
// 渲染树节点前的判断
renderContent(h, { node, data }) {
const isSelected = this.selected.includes(data.id);
const props = {
props: {
...node.props,
checked: isSelected,
},
on: {
...node.on,
click: () => {
this.onClickItem({ item: data });
},
},
};
return (
<van-tree-select-node {...props}>
{data.text}
</van-tree-select-node>
);
},
},
};
</script>
```