Java 后台接口实现同级拖拽排序代码示例

设计思路

    前端将同级下拖拽后,排好序的所有数据id集合传到后台接口,后台根据前端传入的id列表的顺序修改数据库的排序字段。 

controller层代码

  @ApiOperation(value = "排序 @author Tarzan Liu")
    @PostMapping("sort")
    public R<Boolean> sort(@RequestBody List<Long> ids) {
        return R.status(featureSetService.sort(ids));
    }

Service层代码

    /**
     * 方法描述: 排序
     *
     * @param ids
     * @return {@link boolean}
     * @throws
     * @author tarzan
     * @date 2022年01月28日 17:56:25
     */
    public boolean sort(List<Long> ids) {
        List<FeatureSetEntity> updateList= new ArrayList<>();
        for (int i = 0; i < ids.size(); i++) {
            updateList.add(FeatureSetEntity.builder().id(ids.get(i)).sort(i).build());
        }
        return updateBatchById(updateList);
    }

 方法参数接受排好序的所有数据的id集合,方法内部实现按照传入的id列表的顺序修改数据库的排序字段。updateBatchById()是用的mybatis plus 内部的批量修改方法!

maper类和实体类代码是常规代码不展示了!

相关知识

Java 中的 List 是一个接口,它继承自 Collection 接口,并且是 Collection Framework 中最常用的数据结构之一。List 接口提供了有序、可重复的元素集合,可以动态地调整大小。在 Java 中,List 有多种实现类,如 ArrayList、LinkedList 和 Vector 等,每种实现类都适用于不同的使用场景。下面对 Java 中的 List 接口及其主要实现类进行详细解释。

  1. List 接口 List 接口是 java.util 包中定义的一个接口,它继承自 Collection 接口。List 接口以有序、可重复的方式存储元素,提供了添加、删除、查询和修改元素的方法。List 接口还提供了通过索引访问元素的方法,以及获取子列表、反转列表等功能。

  2. ArrayList 类 ArrayList 是 List 接口的主要实现类之一,它基于数组实现。ArrayList 具有动态调整大小的能力,可以根据需要自动扩展或缩小容量。ArrayList 支持快速访问和随机访问元素,但插入和删除元素可能会涉及数组的移动操作。

  3. LinkedList 类 LinkedList 是 List 接口的另一个实现类,它基于链表实现。LinkedList 通过节点之间的链接来存储元素,每个节点包含当前元素和指向前一个和后一个节点的引用。LinkedList 支持快速插入和删除元素,但随机访问元素需要遍历链表。

  4. Vector 类 Vector 是一个古老的实现类,它也是 List 接口的实现类之一。Vector 是线程安全的,支持动态调整大小,并且具有与 ArrayList 类似的功能。然而,由于其同步性质,Vector 的性能相对较差,通常在多线程环境下使用。

  5. Stack 类 Stack 是 Vector 类的子类,它实现了后进先出(LIFO)的堆栈数据结构。Stack 定义了压栈和弹栈等操作,通过 push() 方法将元素入栈,通过 pop() 方法将元素出栈。Stack 在一些特定场景下非常有用,如括号匹配、逆波兰表达式求值等。

  6. CopyOnWriteArrayList 类 CopyOnWriteArrayList 是一个并发安全的列表类,它实现了 List 接口。CopyOnWriteArrayList 使用复制数组的方式来实现并发访问的安全性,每次进行修改时都会创建一个新的数组。这意味着写操作可能会比较耗时,但读操作不会受到影响。

除了上述的主要 List 实现类之外,Java 还提供了其他一些 List 实现类,如带有排序功能的 TreeSet、支持键值对存储的 LinkedHashMap 等。

总结: List 是 Java Collection Framework 中的一个接口,它提供了有序、可重复的元素集合。Java 提供了多种 List 的实现类,包括 ArrayList、LinkedList、Vector、Stack 和 CopyOnWriteArrayList 等。ArrayList 基于数组实现,支持快速访问和随机访问,适用于读取操作频繁的场景;LinkedList 基于链表实现,支持快速插入和删除,适用于插入和删除操作频繁的场景;Vector 是线程安全的,但性能较差;Stack 实现了后进先出的堆栈数据结构;CopyOnWriteArrayList 是并发安全的列表实现类。根据具体的需求和使用场景,选择合适的 List 实现类可以提高程序性能和效率

如果你有更好的实现办法,欢迎交流 微信号:vxhqqh 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰山AI

原创不易,感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值