培训班学习Java第二天
紧接昨天,上机题。
1、输入一个字符串,判断这个字符串是否对称。(例如abcba算对称 abccba也算对称)
思考:
头尾遍历比较,设置标志flag=true,当头尾两值不同时,令flag=flase。(注意关闭scanner。)
2、实现HashMap的value排序
思考:
将HashMap中的元素按照Entry<Key,Value>类型存入到ArrayList集合中。
实现自定义排序,对ArrayList集合排序。
3、设计一个线程(使用自定义线程池),使得字符串”成都是一座你来了就不想走的城市” 每隔1秒钟输出一个字符。 运 行结果如下:(多行输出)
成
成都
成都是
成都是一
成都是一座
成都是一座你
……
成都是一座你来了就不想走的城市
思考:
首先要求使用自定义线程池,需使用ThreadPoolExecutor(),要想以问题要求的方式输出字符可以使用双重遍历,也可以直接调用字符串方法subString()。
ThreadPoolExecutor()参数:
第一个参数 int corePoolSize : 核心线程数
第二个参数 int maximumPoolSize : 最大线程数
第三个参数 long keepAliveTime : 临时线程最大存活时间(这是一个数值,并没有单位)
第四个参数 TimeUnit unit : 临时线程最大存活时间(这个是单位) 枚举 (用法:枚举类名.枚举项名)
第五个参数 BlockingQueue<Runnable> workQueue : 阻塞队列(用于存储还没有执行的线程任务)
第六个参数 ThreadFactory threadFactory : 线程工厂
第七个参数 RejectedExecutionHandler handler : 默认拒绝处理策略(当线程任务数量超过了最大线程数+阻塞队列长度时才会起作用)
创建对象实现run()方法:
主方法:
方法二:
4、任意输入一个字符串,编程输出这个字符串中第一个没有重复的字符的下标和该字符。
如字符串为“dfablkfdalk”,则输出:3-b,如果所有字符均重复则输出“没有不重复的字符”。
5、我们班现在要选举产生最卷的学生,每人有一次投票权,每人的票可以投给任意的学生
用面向对象编程实现这个功能。(假设班级人数6人)。
学生类:
主方法:
6、郭靖去银行办了一张银行卡和存折,卡上存了1000元,郭靖把存折给了黄蓉,他们俩
同时去银行两个柜台,一人用银行卡,一人用存折取款,每次只能取100块,请使用多线
程编程实现他们取出这1000块钱的过程。.
run方法:
主方法: