List<Entity>实现sort排序

本文介绍如何在Java中使用Collections.sort()方法对自定义Entity类的实例列表进行排序,通过实现Comparable接口并重写compareTo()方法,实现根据Entity类中的height属性和路径长度属性进行复合排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

List<Entity> list=new ArrayList<>();
Collections.sort(SearchPathList);

需要在Entity中继承Comparable
重写方法

    @Override
    public int compareTo(Entity sEntity) {
        double n=sEntity.getHeight() - this.getHeight();//先按照加权降序排序,height为double类型
        if(n == 0){
            return sEntity.getEnpath().length()-this.enpath.length();//如果加权相等了再用英文path长度进行降序排序
        }
        int in=(int)Math.round(n*100);
        return in;
    }
package com.example.task6; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @MapperScan("com.example.task6.Mapper") @SpringBootApplication public class Task6Application { public static void main(String[] args) { SpringApplication.run(Task6Application.class, args); } } package com.example.task6.Mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.task6.Entity.Phone; import org.apache.ibatis.annotations.Mapper; @Mapper public interface PhoneMapper extends BaseMapper<Phone> { }package com.example.task6.Mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.task6.Entity.BasicCard; import org.apache.ibatis.annotations.Mapper; @Mapper public interface BasicCardMapper extends BaseMapper<BasicCard> { }package com.example.task6.Entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName("phone") // 添加表名注解 public class Phone { private String name; @TableField("ph_number") private String phNumber; }package com.example.task6.Entity; import lombok.Data; import java.util.List; @Data public class CardRequest { private String name; private String email; private String theGroup; private List<String> phNumbers; }package com.example.task6.Entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.util.List; @Data @TableName("basic_info") public class BasicCard { //@TableId:标识该字段是数据库表的主键 // //type = IdType.INPUT:指定主键生成策略为"用户输入" @TableId(type = IdType.INPUT) // 明确指定name是主键 private String name; private String email; @TableField("the_group") //映射数据库属性 private String theGroup; @TableField(exist = false) //表示非映射数据库的属性 private List<String> phNumbers; }package com.example.task6.Controller; import com.example.task6.Entity.BasicCard; import com.example.task6.Entity.CardRequest; import com.example.task6.Entity.Phone; import com.example.task6.Service.CardOperatingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.stream.Collectors; @RestController @RequestMapping("/api/cards") public class CardController { private final CardOperatingService cardOperatingService; @Autowired public CardController(CardOperatingService cardOperatingService) { this.cardOperatingService = cardOperatingService; } // 添加名片 @PostMapping public boolean addCard(@RequestBody CardRequest request) { BasicCard card = new BasicCard(); card.setName(request.getName()); card.setEmail(request.getEmail()); card.setTheGroup(request.getTheGroup()); List<Phone> phones = request.getPhNumbers().stream() .map(num -> { Phone p = new Phone(); p.setName(request.getName()); p.setPhNumber(num); return p; }).collect(Collectors.toList()); return cardOperatingService.addCard(card, phones); } // 删除名片 @DeleteMapping("/{name}") public boolean deleteCard(@PathVariable String name) { return cardOperatingService.deleteCard(name); } // 更新名片 @PutMapping public boolean updateCard( @RequestBody CardRequest request) { BasicCard card = new BasicCard(); card.setName(request.getName()); card.setEmail(request.getEmail()); card.setTheGroup(request.getTheGroup()); return cardOperatingService.updateCard(card, request.getPhNumbers()); } // 模糊查询 @GetMapping("/search") public List<BasicCard> search(@RequestParam String keyword) { return cardOperatingService.searchByName(keyword); } // 组合查询 @GetMapping("/search/phones") public List<BasicCard> searchByPhones(@RequestParam List<String> numbers) { return cardOperatingService.searchByPhones(numbers); } // 排序 @GetMapping("/sort") public List<BasicCard> sort( @RequestParam String field, @RequestParam boolean asc) { return cardOperatingService.sortCards(field, asc); } // 获取完整名片 @GetMapping("/{name}") public BasicCard getCard(@PathVariable String name) { return cardOperatingService.getFullCard(name); } }spring.application.name=task6 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/task6?useSSL=false spring.datasource.username=root spring.datasource.password=cjzl22446 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl </licenses> <developers> <developer/> </developers> <scm> <connection/> <developerConnection/> <tag/> <url/> </scm> <properties> <java.version>21</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId> <version>3.5.7</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.22</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </path> </annotationProcessorPaths> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project> 这是全部代码,找出jar包报错原因11:42:27.854 [main] ERROR org.springframework.boot.SpringApplication -- Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cardController' defined in URL [jar:file:/C:/Users/17586/IdeaProjects/task6/out/artifacts/task6_jar/task6.jar!/com/example/task6/Controller/CardController.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'cardOperatingService' defined in URL [jar:file:/C:/Users/17586/IdeaProjects/task6/out/artifacts/task6_jar/task6.jar!/com/example/task6/Service/CardOperatingService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'basicCardMapper' defined in URL [jar:file:/C:/Users/17586/IdeaProjects/task6/out/artifacts/task6_jar/task6.jar!/com/example/task6/Mapper/BasicCardMapper.class]: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1222) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1188) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1123) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:987) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.example.task6.Task6Application.main(Task6Application.java:11) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cardOperatingService' defined in URL [jar:file:/C:/Users/17586/IdeaProjects/task6/out/artifacts/task6_jar/task6.jar!/com/example/task6/Service/CardOperatingService.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'basicCardMapper' defined in URL [jar:file:/C:/Users/17586/IdeaProjects/task6/out/artifacts/task6_jar/task6.jar!/com/example/task6/Mapper/BasicCardMapper.class]: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:804) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1395) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1682) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1628) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ... 20 common frames omitted Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'basicCardMapper' defined in URL [jar:file:/C:/Users/17586/IdeaProjects/task6/out/artifacts/task6_jar/task6.jar!/com/example/task6/Mapper/BasicCardMapper.class]: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1826) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1682) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1628) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ... 33 common frames omitted Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.util.Assert.notNull(Assert.java:181) at org.mybatis.spring.support.SqlSessionDaoSupport.checkDaoConfig(SqlSessionDaoSupport.java:125) at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:73) at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1873) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1822) ... 43 common frames omitted
最新发布
06-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值