2021-10-25 pta(6) 集合反射注解 及 Eclipse常用快捷键

目录

Eclipse常用快捷键

填空题

6-6 jmu-Java-05集合-List中指定元素的删除 (15 分)

裁判测试程序:

答案:

7-2 List的使用 (15 分)

输入格式:

输出格式:

输入样例:

输出样例:

答案: 


Eclipse常用快捷键

/*
 * Eclipse常用快捷键
 * 1.补全代码声明:alt + /
 * 2.快速修复:ctrl + 1
 * 3.批量导包:ctrl + shift + o
 * 4.单行注释:ctrl + /
 * 5.多行注释:ctrl + shift + /
 * 6.取消多行注释:ctrl + shift + \
 * 7.复制指定行:ctrl + alt + ↓或↑
 * 8.删除指定行:ctrl + d
 * 9.上下移动代码:alt + ↑或↓
 * 10.切换到下一行代码空位:shift + enter
 * 11.切花到上一行代码空位:ctrl + shift + enter
 * 12.查看源码:ctrl + shift + T 或者 ctrl + 目标
 * 13.退回到前一个编辑页面:alt + ←
 * 14.前进到下一个编辑页面:alt + →
 * 15.查看指定类继承树结构:ctrl + T
 * 16.复制代码:ctrl + c
 * 17.撤销:ctrl + z
 * 18.重做:ctrl + y
 * 19.剪切:ctrl + x
 * 20.粘贴:ctrl + v
 * 21.保存:ctrl + s
 * 22.全选:ctrl + a
 * 23.格式化代码:ctrl + shift + f
 * 24.选中数行,整体后移:tab
 * 25.选中数行,整体前移:shift + tab
 * 26.在当前类中享实类结构,搜索指定的属性和方法:ctrl + o
 * 27.批量修改指定的变量名、方法名和类名:alt + shift + r
 * 28.转大写:ctrl + shift + x
 * 29.转小写:ctrl + shift + y
 * 30.自动生成getter/setter/构造器:alt + shift + s
 * 31.显示当前选择资源的属性:alt + enter
 * 32.快速查找(参照选中字符快速定位下一个):ctrl + k
 * 33.关闭当前窗口:ctrl + w
 * 34.关闭所有窗口:ctrl + shift + w
 * 35.查看指定的结构被使用过的地方:ctrl + alt + g
 * 36.查找与替换:ctrl + f
 * 37.最大化当前的视图:ctrl + m
 * 38.直接定位到当前行的首位:home
 * 39.直接定位到当前行的末位:end
 */

填空题

4-1 自定义一个注解AnnotationTest,设置参数的默认值空字符串

@Target({TYPE, METHOD})
@Retention(RetentionPolicy.RUNTIME )
public AnnotationTest{
    String value() default "";
}

4-2利用反射,为对象的name属性赋值.

class People{ 
    private String name; 
    private int age; 
    public String toString(){ 
        return "name is" + name +",age is" + age; 
    } 
} 

import java.lang.reflect.*; 
public class Main { 
    public static void main(String[] args) { 
        People p = new People(); 
        Class cla = p.getClass(); //
        Field nameField = cla.getDeclaredField("name");  //
        nameField.setAccessible(true);         
        nameField.set(stu,"Tom") ;//设置对象的姓名属性为Tom 
    } 
} 

5-3 下列程序使用泛型机制创建一个数组列表对象,并向其添加三个元素,利用迭代器遍历该数组列表,请把程序补充完整。

import java.util.*; 
public class Main{ 
	public static void main(String[] args) { 
		List<String> al=new ArrayList<String>(); 
		al.add("red"); 
		al.add("yellow"); 
		al.add("blue");
		ListIterator<String> listIter = al.listIterator(); 
		while(listIter.hasNext())
			System.out.print(listIter.next()+"  ");
	}
}

输出

red  yellow  blue 

6-6 jmu-Java-05集合-List中指定元素的删除 (15 分)

编写以下两个函数

/*以空格(单个或多个)为分隔符,将line中的元素抽取出来,放入一个List*/
public static List<String> convertStringToList(String line) 
/*在list中移除掉与str内容相同的元素*/
public static void remove(List<String> list, String str)

裁判测试程序:

public class Main {

    /*covnertStringToList函数代码*/   

    /*remove函数代码*/

     public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
            List<String> list = convertStringToList(sc.nextLine());
            System.out.println(list);
            String word = sc.nextLine();
            remove(list,word);
            System.out.println(list);
        }
        sc.close();
    }

}

样例说明:底下展示了4组测试数据。

###输入样例

1 2 1 2 1 1 1 2
1
11 1 11 1 11
11
2 2 2 
1
1   2 3 4 1 3 1
1

###输出样例

[1, 2, 1, 2, 1, 1, 1, 2]
[2, 2, 2]
[11, 1, 11, 1, 11]
[1, 1]
[2, 2, 2]
[2, 2, 2]
[1, 2, 3, 4, 1, 3, 1]
[2, 3, 4, 3]

答案:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {
	/*以空格(单个或多个)为分隔符,将line中的元素抽取出来,放入一个List*/
	public static List<String> convertStringToList(String line) {
		//加空格
		String[] ss = line.split("\\s+");  String的split方法支持正则表达式
		//Arrays:asList(T... a)  返回由指定数组支持的固定大小的列表。
        //ArrayList(int initialCapacity)  构造具有指定初始容量的空列表。 
		List<String> st = new ArrayList<String>(Arrays.asList(ss)); 将数组转化为list
		return st;
	}
	
	/*在list中移除掉与str内容相同的元素*/
	public static void remove(List<String> list, String str) {
		//List:boolean contains(Object o)  如果此列表包含指定的元素,则返回 true
		if(!list.contains(str)) return;
		else {
			//List:int size() 返回此列表中的元素数。 
			for(int i=0;i<list.size();i++) {
				//怎么把String数组放到List中,可以先把String数组转换为List
				//String:boolean contains(CharSequence s)  当且仅当此字符串包含指定的char值序列时才返回true。 
				if(str.contains(list.get(i))) {
					list.remove(list.get(i));
					i--; 这是难度,删除的话必须加这句,否则你可能会出现跳着删除的情况
				}			
			}
		}

	}
	
     public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextLine()){
            List<String> list = convertStringToList(sc.nextLine());
            System.out.println(list);
            String word = sc.nextLine();
            remove(list,word);
            System.out.println(list);
        }
        sc.close();
    }
}

好好看注释。 

在eclipse中, 快速输入System.out.println();的快捷键:

        首先输入syso,然后再按Alt+/ ,就可以快速输入。

7-2 List的使用 (15 分)

本题练习列表的使用。

  • 定义Person类
  1. 定义私有属性String name,int age,使用Eclipse生成每个属性setter 、getter,有参Person(String name,int age) 、无参 构造方法,toString方法。
  • 定义Main类,在main方法中
  1. 定义List list = new ArrayList();
  2. 用键盘给变量n赋值
  3. 生成n个Person对象并添加到列表中,该Person的name和age通过键盘给出
  4. 循环列表,输出列表所有Person对象信息(调用toString方法)
  5. 输入一个字符串表示姓名,判断该字符串表示的Person对象在List中是否存在,如果存在,输出该Person,否则输出此人不存在。

输入格式:

先一行输入n表示对象个数,然后每行输入一个Person对象的name和age 一行输入一个人的姓名对其进行查询

输出格式:

对每一对象,在一行中输出对象的信息。 对查询的人员,查到输出该人的信息,否则输出此人不存在。

输入样例:

在这里给出一组输入。例如:

3
zhang 23
li 44
wang 33
li
3
zhang 23
li 44
wang 33
may

输出样例:

在这里给出相应的输出。例如:

Person [name=zhang, age=23]
Person [name=li, age=44]
Person [name=wang, age=33]
Person [name=li, age=44]
Person [name=zhang, age=23]
Person [name=li, age=44]
Person [name=wang, age=33]
此人不存在

答案: 

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		List<Person> list = new ArrayList<Person>();
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		for(int i=0;i<n;i++) {
			Person p=new Person(sc.next(),sc.nextInt());
			list.add(p);
			System.out.println(p.toString());
		}
		
		String na = sc.next();
		int flag = 0;
		for(int i=0;i<n;i++) {
			//
			if(list.get(i).getName().equals(na)) {
				System.out.println(list.get(i).toString());
				flag = 1;
			}
		}
		if(flag == 0)
			System.out.println("此人不存在");
	}
}

class Person {
	private String name;
	private int age;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int s1) {
		this.age = s1;
	}
	public Person() {
		
	}
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	
	@Override
	public String toString() {
		return "Person [name=" +name+", age="+age+"]";
	}
	
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值