1.创建一个字符串数组:{"one","two","three"}
然后将该数组转换为一个List集合
String[] arr = {"one","two","three"}; List<String> list = Arrays.asList(arr); System.out.println(list);
2.创建一个List集合,并存放10个随机数,然后排序该集合后输出
Random random = new Random(); List<Integer> list = new ArrayList<Integer>(); for(int i=0;i<10;i++){ list.add(random.nextInt(100)); } System.out.println("list:"+list); Collections.sort(list); System.out.println("list:"+list);
3.通过控制台输入3个日期(yyyy-MM-dd格式),然后转换为Date对象后存入
集合,然后对该集合排序后输出所有日期。
Scanner scanner = new Scanner(System.in); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); List<Date> list = new ArrayList<Date>(); for(int i=1;i<=3;i++){ System.out.println("请输入第"+i+"个日期:"); String line = scanner.nextLine(); Date date = sdf.parse(line); list.add(date); } System.out.println(list); Collections.sort(list); System.out.println(list);
4.要求用户输入若干员工信息,格式为:
name,age,gender,salary,hiredate;name,age,gender,salary,hiredate;....
例如:
张三,25,男,5000,2006-02-15;李四,26,女,6000,2007-12-24;...
然后将每个员工信息解析成Emp对象。并存入到一个集合中。
然后循环集合,输出每一个员工信息(输出使用toString返回的字符串)
然后输出每个员工的转正日期。
转正日期为:入职3个月的当周周五
List<Emp> list = new ArrayList<Emp>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Scanner scanner = new Scanner(System.in); System.out.println("请输入员工信息:"); String info = scanner.nextLine(); String[] empArr = info.split(";"); for(String data:empArr){ String[] empInfo = data.split(","); String name = empInfo[0]; int age = Integer.parseInt(empInfo[1]); String gender = empInfo[2]; int salary = Integer.parseInt(empInfo[3]); Date hiredate = sdf.parse(empInfo[4]); Emp e = new Emp(name, age, gender, salary, hiredate); list.add(e); } //输出员工信息 for(Emp e : list){ System.out.println(e); } //输出转正仪式日期 for(Emp e : list){ Calendar calendar = Calendar.getInstance(); calendar.setTime(e.getHiredate()); //入职3个月后的日期 calendar.add(Calendar.MONTH, 3); //设置为当周的周五 calendar.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); System.out.println(e.getName()+"的转正仪式日期:"+sdf.format(calendar.getTime())); }
5。创建一个Map,保存某个学生的成绩:
*在控制台输入该学生成绩,格式:
*科目:成绩;科目:成绩;...
*例如:
*语文:99;数学:98;英语:97;物理:96;化学:95
*然后输出物理的成绩。
*然后将化学的成绩设置为96
*然后删除英语这一项。
*然后遍历该Map分别按照遍历key,Entry,value
*的形式输出该Map信息。
Map<String,Integer> map = new HashMap<String,Integer>(); map.put("语文", 99); map.put("数学", 98); map.put("英语", 97); map.put("物理", 96); map.put("化学", 95); //获取物理的成绩 Integer num = map.get("物理"); System.out.println("物理:"+num); //设置化学成绩 map.put("化学",96); //删除英语 map.remove("英语"); //遍历key Set<String> keySet = map.keySet(); for(String key : keySet){ System.out.println("key:"+key); } //遍历Entry Set<Entry<String,Integer>> entrySet = map.entrySet(); for(Entry<String,Integer> e : entrySet){ System.out.println(e.getKey()+":"+e.getValue()); } //遍历values Collection<Integer> values = map.values(); for(Integer value : values){ System.out.println("value:"+value); }
选做扩展题:
两个线程交叉打印数字1-50,打印效果如下
提示:需要每个线程打印5个数字以后释放对象锁,释放锁请参考Object类的wait()方法和notify()方法
Thread1-1
Thread1-2
Thread1-3
Thread1-4
Thread1-5
Thread2-6
Thread2-7
Thread2-8
Thread2-9
Thread2-10
Thread1-11
Thread1-12
Thread1-13
Thread1-14
Thread1-15
......
public static void main(String[] args) throws Exception{
AA a = new AA(); new Thread(a).start(); new Thread(a).start();
}
class AA implements Runnable{
Object obj=new Object();
int num=1;
@Override
public void run() {
while(num<50) {
synchronized (obj) { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName()+" "+num++); if(num==51) { System.exit(0); } } obj.notifyAll(); try { obj.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } }
}