【Java基础6】集合,泛型

集合,泛型

一、概念题

  1. 什么是集合,请列举集合中常用的类和接口?

    集合:是一组复合元素 方法。

    接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

    实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

    Collection 接口的子类型有List、Set ,再下面是一些抽象类,最后是具体实现类ArrayList、LinkedList、HashSet、TreeSet等。Map底下有HashMap等

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ledQkn8-1615898379860)(D:\Desktop\1.png)]

  2. 什么是泛型?

    泛型:一种不确定的数据类型。泛型的本质是参数化类型,即将所操作的数据类型指定为一个参数;

    所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(即、、、等)

  3. 集合和数组有什么区别?
    | 集合: | 数组: |
    | :--------------------------: | :----------------------: |
    | 可存储不同类型的元素(泛型) | 必须存储相同一类型的元素 |
    | 集合的长度可以改变 | 数组的长度固定 |

  4. 了解一下栈结构和队列结构,这两个结构有什么区别?
    | 栈结构 | 队列结构 |
    | :------------------------------------: | :--------------------: |
    | [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mGiCTSKP-1615898379863)(F:\新思路\JavaEE\考核作业\2.png)] | [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3RvaVOSi-1615898379864)(D:\Desktop\3.png)] |

  5. Collection和Collections的有什么区别?

    **Collections:**是一个集合框架的帮助类,里面包含一些对集合的排序,搜索以及序列化的操作。

    即Collections 是一个包装类;而Collection是一个接口

    详见(1.)的图表

二、编程题

  1. 用for循环遍历ArrayList,用foreach循环遍历LinkedList,用Iterator遍历HashSet(这三个集合里的内容可以自己定义,只要遍历输出即可。)

  2. 控制台输入数字1~7,程序运行输出对应的星期(星期一至星期日)。

  3. 定义一个账户类(Account),它包含private成员变量name,id,age,balance(余额),每个属性都要写get,set方法,并重写 toString 方法输出 name, id,age,balance

    要求:

    创建Account类的 5 个对象,并把这些对象放入 TreeSet 集合中

    分别按以下两种方式对集合中的元素进行排序,并遍历输出:

    ①按balance的大小倒序输出

    ②按姓名name按字典顺序(a、b、c…)排列输出

1

  public static void main(String[] args) {
  //创建集合对象
      List<String> c = new ArrayList<String>();
      //添加元素
      c.add("hello");
      c.add("world");
      c.add("java");
  
      for (int i=0;i<c.size();i++){
          String s = c.get(i);
          System.out.println(s);
      }
  }
public static void main(String[] args) {
//创建集合对象
    List<String> c = new LinkedList<String>();
	//添加元素
    c.add("hello");
    c.add("world");
    c.add("java");

   for (String s : c){
            System.out.println(s);
        }
}
public static void main(String[] args) {
//创建集合对象
    Collection<String> c = new HashSet<String>();
    //添加元素
    c.add("Hello");
    c.add("world");
    c.add("java");
   	//采用迭代器的方法遍历
   Iterator<String> it = c.iterator();
   while (it.hasNext()){
        String s = it.next();
       System.out.println(s);
   }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-InXdVdik-1615898379865)(F:\新思路\JavaEE\六1.png)]

  1. public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
    
        list.add("Monday");
        list.add("Tuesday");
        list.add("Wednesday");
        list.add("Thursday");
        list.add("Friday");
        list.add("Saturday");
        list.add("Sunday");
        Scanner scanner = new Scanner(System.in);
    
        while (scanner.hasNextInt()){
            int i = scanner.nextInt();
            if (i<1 || i>7)
                break;
            System.out.println(list.get(i - 1));
        }
    
        scanner.close();
    
    }
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LWNoUDEB-1615898379867)(F:\新思路\JavaEE\六2.png)]

  2. ①按balance的大小倒序输出

    Text:

   public static void main(String[] args) {
           //创建集合对象
           TreeSet<Account> s = new TreeSet<>();
   
           //创建测试对象
           Account s1 = new Account("ming", 123123, 18, 1_000_000);
           Account s2 = new Account("hong", 123125, 17, 1_000_005);
           Account s3 = new Account("li", 123124, 16, 1_000_500);
           Account s4 = new Account("zhang", 123127, 19, 1_050_000);
           Account s5 = new Account("liang", 123126, 18, 100_000);
   		   //添加元素
           s.add(s1);
           s.add(s2);
           s.add(s3);
           s.add(s4);
           s.add(s5);
           //按balance的大小倒序遍历输出
           for (Account x : s){
               System.out.println(x);
           }
       }

Account:

public class Account implements Comparable<Account> {

    private String name;
    private long id;
    private int age;
    private int balance;

    public Account(){
    }

    public Account(String name,int id,int age,int balance){
        this.name = name;
        this.id = id;
        this.age = age;
        this.balance = balance;
    }

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }

    public long getId(){
        return id;
    }

    public void setId(long id){
        this.id = id;
    }

    public int getAge(){
        return age;
    }

    public void setAge(int age){
        this.age = age;
    }

    public int getBalance(){
        return balance;
    }

    public void setBalance(int balance){
        this.balance = balance;
    }

    @Override
    public int compareTo(Account s) {
        int num1 =  s.balance - this.balance ;
        int num2 = num1 == 0? s.name.compareTo(this.name):num1;
        return num2;
    }

    @Override
    public String toString() {
        return getName() + "," +getId() + "," + getAge() + "," + getBalance();
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7gS8BnGo-1615898379869)(F:\新思路\JavaEE\六3’.png)]

②按姓名name按字典顺序(a、b、c…)排列输出

Text:

public static void main(String[] args) {
    //创建集合对象
    TreeSet<Account> s = new TreeSet<>();

    //创建测试对象
    Account s1 = new Account("ming", 123123, 18, 1_000_000);
    Account s2 = new Account("hong", 123125, 17, 1_000_005);
    Account s3 = new Account("li", 123124, 16, 1_000_500);
    Account s4 = new Account("zhang", 123127, 19, 1_050_000);
    Account s5 = new Account("liang", 123126, 18, 100_000);
	//添加元素
    s.add(s1);
    s.add(s2);
    s.add(s3);
    s.add(s4);
    s.add(s5);
    
    //按姓名name按字典顺序(a、b、c…)排列遍历输出
    for (Account y : s){
        System.out.println(y.toString());
    }
}

Account

public class Account implements Comparable<Account> {

    private String name;
    private long id;
    private int age;
    private int balance;

    public Account(){
    }

    public Account(String name,int id,int age,int balance){
        this.name = name;
        this.id = id;
        this.age = age;
        this.balance = balance;
    }

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }

    public long getId(){
        return id;
    }

    public void setId(long id){
        this.id = id;
    }

    public int getAge(){
        return age;
    }

    public void setAge(int age){
        this.age = age;
    }

    public int getBalance(){
        return balance;
    }

    public void setBalance(int balance){
        this.balance = balance;
    }

    @Override
    public int compareTo(Account s) {
        int num = this.name.compareTo(s.name);
        return num;
    }

    @Override
    public String toString() {
        return getName() + "," +getId() + "," + getAge() + "," + getBalance();
    }
}


    this.balance = balance;
    }

    @Override
    public int compareTo(Account s) {
        int num = this.name.compareTo(s.name);
        return num;
    }

    @Override
    public String toString() {
        return getName() + "," +getId() + "," + getAge() + "," + getBalance();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值