自定义泛型集合,分别实现增删改查和排序操作?


 class Program

    {
        static void Main(string[] args)
        {
            Custom<string> custom = new Custom<string>();
            custom.Add("456");
            custom.Add("123");
            custom.Add("789");
            custom.SystemSort();
            custom.QuickSort(0, 2);
            custom.InsertSort();
            custom.ChooseSort();
            custom.BubbleSort();
            foreach (string str in custom)
            {
                Console.WriteLine(str);
            }
            for (int i = 0; i < custom.Capacity; i++)
            {
                Console.WriteLine(custom[i]);
            }
        }

    }


    class Custom<T> : IEnumerable where T : IComparable
    {
        List<T> list;
        public Custom()//初始化集合
        {
            list = new List<T>();
        }        
        public int Capacity//封装属性
        {
            get { return list.Count; }
        }
        public void Add(T value)//添加元素
     
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较具体的问题,我可以为您提供一些思路和建议。 首先,您需要定义一个注解,用来标记需要记录到数据库的方法。可以定义一个类似于下面的注解: ```java @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface LogToDatabase { String value() default ""; } ``` 其中,`@Retention` 注解用来指定注解的生命周期,这里设为 `RUNTIME`,表示在运行期间保留注解信息;`@Target` 注解用来指定注解的作用目标,这里设为 `METHOD`,表示注解可以用在方法上。`@interface` 关键字表示这是一个注解的定义。 注解上面的 `value()` 方法表示注解的一个属性,可以用来存储一些额外的信息。在这个例子中,我们可以用它来记录操作的类型,比如增删改查。 接下来,您需要编写一个切面(Aspect),用来实现对标记了注解的方法进行拦截和记录。可以定义一个类似于下面的切面: ```java @Aspect @Component public class LogToDatabaseAspect { private final Logger logger = LoggerFactory.getLogger(LogToDatabaseAspect.class); @Autowired private JdbcTemplate jdbcTemplate; @Around("@annotation(logToDatabase)") public Object logToDatabase(ProceedingJoinPoint joinPoint, LogToDatabase logToDatabase) throws Throwable { // 获取方法名和参数 String methodName = joinPoint.getSignature().getName(); Object[] args = joinPoint.getArgs(); // 执行方法 Object result = joinPoint.proceed(args); // 记录日志到数据库 String operationType = logToDatabase.value(); String sql = "INSERT INTO operation_log (operation_type, method_name, parameters, result) VALUES (?, ?, ?, ?)"; jdbcTemplate.update(sql, operationType, methodName, Arrays.toString(args), result.toString()); // 返回结果 return result; } } ``` 这个切面使用 Spring AOP 实现,使用了 `@Around` 注解来指定拦截的方法。在方法执行前后,会执行切面中的代码。在这个例子中,我们将会记录操作日志到数据库中。 最后,您需要在需要记录操作日志的方法上标记注解,比如: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @LogToDatabase("insert") @Override public void addUser(User user) { userDao.addUser(user); } @LogToDatabase("delete") @Override public void deleteUser(int userId) { userDao.deleteUser(userId); } @LogToDatabase("update") @Override public void updateUser(User user) { userDao.updateUser(user); } @LogToDatabase("select") @Override public User getUser(int userId) { return userDao.getUser(userId); } } ``` 这样,当调用这些方法时,切面就会拦截它们,并将操作日志记录到数据库中。 希望这些思路和建议能够帮助您完成您的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值