1. 编写一个圆类 Circle 的 Java 程序。圆类有2个数据成员 , 分别是半径radius和颜色 color, 这些属性可查.看 get 也可以重新设置 set, 另外 , 圆还可以返回其面积 area 。 ```java package Weekly_Task;

    /**

    • @author Devil
    • @create 2021-10-25-15:11 */ public class Circle{ private double radius; private String color;

      public Circle(double radius, String color){

      1. this.radius = radius;
      2. this.color = color;

      }

      public double getRadius() {

      1. return radius;

      }

      public String getColor() {

      1. return color;

      }

      public void setRadius(double radius) {

      1. this.radius = radius;

      }

      public void setColor(String color) {

      1. this.color = color;

      }

      public double getArea(){

      1. return Math.PI*radius*radius;

      } } ```

    1. (1)ArrayList底层采用_结构来实现的,LinkedList底层采用_数据结构来实现的

    在一般情况下,上述两种数据结构的优缺点是什么?

    答:数组 链表 数组缺点:不适合动态地改变它存储的数据,如增加、删除等(时间效率低);优点:查询、修改方面的时间效率高。 链表缺点:查询、修改它储存的数据时间效率低;优点:适合动态地改变它存储的数据,如增加、删除等(时间效率高)。

    1. (2)HashSet底层数据结构在JDK8做了一次重大升级,JDK8之前采用的是**____**来实现的,也就是数组 +链表来实现;到了JDK8之后采用**____**来实现。

    答: HashMap 数组+链表+红黑树

    1. 编写一个程序,能够统计一句话中各个字母出现的次数。

    示例 1:

    1. 复制代码
    2. 输入:I love Echo 输出:{c=1, e=1, E=1, v=1, h=1, I=1, l=1, o=2}


    提示:

    1. map.containsKey(i)//使用Map做该题时,该方法可判断map集合中是否含有该key String s=str.replace(" ", ""); //该代码可去除字符串中的空格

    代码:

    1. package Weekly_Task;
    2. import java.util.HashMap;
    3. import java.util.Iterator;
    4. import java.util.Map;
    5. import java.util.Scanner;
    6. /**
    7. * @author Devil
    8. * @create 2021-10-25-15:43
    9. */
    10. public class Demo5 {
    11. public static void main(String[] args) {
    12. Scanner input = new Scanner(System.in);
    13. HashMap<Character, Integer> map = new HashMap<>();
    14. String str = input.nextLine();
    15. String s = str.replace(" ", "");
    16. for (int i = 0; i < s.length(); i++) {
    17. if (!map.containsKey(s.charAt(i))) {
    18. map.put(s.charAt(i), 1);
    19. } else {
    20. map.put(s.charAt(i), map.get(s.charAt(i)) + 1);
    21. }
    22. }
    23. Iterator<Map.Entry<Character, Integer>> iter = map.entrySet().iterator();
    24. System.out.print("{");
    25. while (iter.hasNext()) {
    26. Map.Entry<Character, Integer> key = iter.next();
    27. System.out.print(key.getKey() + "=" + key.getValue());
    28. if (!iter.hasNext()) {
    29. System.out.println("}");
    30. }else{
    31. System.out.print(", ");
    32. }
    33. }
    34. }
    35. }

    控制台输出:

    1. I love Echo
    2. {c=1, e=1, E=1, v=1, h=1, I=1, l=1, o=2}
    1. 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

    示例 1:

    1. 输入:nums = [2,7,1115], target = 9
    2. 输出:[0,1]
    3. 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]

    示例 2:

    1. 输入:nums = [3,2,4], target = 6
    2. 输出:[1,2]

    方法一:暴力法
    代码:

    1. package Weekly_Task;
    2. import java.util.ArrayList;
    3. import java.util.Scanner;
    4. /**
    5. * @author Devil
    6. * @create 2021-10-25-16:04
    7. */
    8. public class Demo6 {
    9. public static void main(String[] args) {
    10. ArrayList<Integer> arrayList = new ArrayList<>();
    11. Scanner input = new Scanner(System.in);
    12. int number = input.nextInt();
    13. while(number>0){
    14. arrayList.add(input.nextInt());
    15. number--;
    16. }
    17. int target = input.nextInt();
    18. for (int i = 0; i < arrayList.size() - 1; i++) {
    19. for (int j = i + 1; j < arrayList.size(); j++) {
    20. if (arrayList.get(i) + arrayList.get(j) == target) {
    21. System.out.println("[" + i + "," + j + "]");
    22. break;
    23. }
    24. }
    25. }
    26. }
    27. }

    方法二:HashMap两次迭代
    代码:

    1. package Weekly_Task;
    2. import java.util.ArrayList;
    3. import java.util.HashMap;
    4. import java.util.Scanner;
    5. /**
    6. * @author Devil
    7. * @create 2021-10-25-16:04
    8. */
    9. public class Demo6 {
    10. public static void main(String[] args) {
    11. ArrayList<Integer> arrayList = new ArrayList<>();
    12. Scanner input = new Scanner(System.in);
    13. int number = input.nextInt();
    14. while(number>0){
    15. arrayList.add(input.nextInt());
    16. number--;
    17. }
    18. int target = input.nextInt();
    19. HashMap<Integer,Integer> map = new HashMap<>();
    20. for (int i = 0; i < arrayList.size(); i++) {
    21. map.put(arrayList.get(i),i);
    22. }
    23. for (int i = 0; i < arrayList.size(); i++) {
    24. if(map.containsKey(target-arrayList.get(i))&&map.get(target-arrayList.get(i))!=i){
    25. System.out.println("["+i+","+map.get(target-arrayList.get(i))+"]");
    26. break;
    27. }
    28. }
    29. }
    30. }

    方法三:hashmap一次迭代
    代码:

    1. package Weekly_Task;
    2. import java.util.ArrayList;
    3. import java.util.HashMap;
    4. import java.util.Scanner;
    5. /**
    6. * @author Devil
    7. * @create 2021-10-25-16:04
    8. */
    9. public class Demo6 {
    10. public static void main(String[] args) {
    11. ArrayList<Integer> arrayList = new ArrayList<>();
    12. Scanner input = new Scanner(System.in);
    13. int number = input.nextInt();
    14. while(number>0){
    15. arrayList.add(input.nextInt());
    16. number--;
    17. }
    18. int target = input.nextInt();
    19. HashMap<Integer,Integer> map = new HashMap<>();
    20. //在一个没有num[i]的map中查找满足target-num[i]的值的键,再将num[i]添加到map中
    21. for (int i = 0; i < arrayList.size(); i++) {
    22. int complement = target - arrayList.get(i);
    23. if(map.containsKey(complement)){
    24. System.out.println("["+map.get(complement)+","+i+"]");
    25. }
    26. map.put(arrayList.get(i),i);
    27. }
    28. }
    29. }

    控制台输出:

    1. 输入:4
    2. 2 7 11 15 9
    3. 输出:[0,1]
    1. 创建一个对象类,成员变量为name和age,请存储学生对象并遍历

    要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序
    提示:创建TreeSet集合,使用比较器排序。
    示例

    1. 对象属性:
    2. "xishi",23
    3. "diaochan",28
    4. "wangzhaojun",28
    5. "yangyuhuan",25
    6. 排序后输出结果:
    7. 23,xishi
    8. 25,yangyuhuan
    9. 28,diaochan
    10. 28,wangzhaojun

    代码:

    1. package Weekly_Task;
    2. import java.util.Comparator;
    3. import java.util.Iterator;
    4. import java.util.Scanner;
    5. import java.util.TreeSet;
    6. /**
    7. * @author Devil
    8. * @create 2021-10-25-16:22
    9. */
    10. public class Demo7 {
    11. public static void main(String[] args) {
    12. TreeSet<Objects> set = new TreeSet<>();
    13. Scanner input = new Scanner(System.in);
    14. Objects o1 = new Objects(input.next(), input.nextInt());
    15. Objects o2 = new Objects(input.next(), input.nextInt());
    16. Objects o3 = new Objects(input.next(), input.nextInt());
    17. Objects o4 = new Objects(input.next(), input.nextInt());
    18. set.add(o1);
    19. set.add(o2);
    20. set.add(o3);
    21. set.add(o4);
    22. System.out.println("排序后输出结果:");
    23. Iterator<Objects> iter = set.iterator();
    24. while (iter.hasNext()) {
    25. Objects o = iter.next();
    26. System.out.println(o.getName() + "," + o.getAge());
    27. }
    28. }
    29. }
    30. class Objects implements Comparable {
    31. private String name;
    32. private int age;
    33. public Objects(String name, int age) {
    34. this.name = name;
    35. this.age = age;
    36. }
    37. public String getName() {
    38. return name;
    39. }
    40. public int getAge() {
    41. return age;
    42. }
    43. @Override
    44. public int compareTo(Object object) {
    45. Objects o = (Objects) object;
    46. if(this.age==o.age){
    47. return 1;
    48. }
    49. else{
    50. return this.age-o.age;
    51. }
    52. }
    53. }

    控制台输出:

    1. 对象属性:
    2. "xishi" 23
    3. "diaochan" 28
    4. "wangzhaojun" 28
    5. "yangyuhuan" 25
    6. 排序后输出结果:
    7. "xishi",23
    8. "yangyuhuan",25
    9. "diaochan",28
    10. "wangzhaojun",28