java集合类的概念和Collection集合、Queue、List集合、Collection集合

版权声明:最短的时间最核心的知识,有疑问,欢迎进行留言。 https://blog.csdn.net/lizhidefengzi/article/details/79283749

今日内容:

  • (1)日期相关的类
  • (2)集合类
  • (3)List集合
  • (4)Queue集合
  • (5)Set集合
  • (6)Map集合
【基础练习】

首先输入学生人数,循环输入班级的学生信息,然后放入Student数组中,并打印所有姓zhang的学生信息。
要求姓名用拼音(不要用汉字),学生所有信息用String格式输入,中间用逗号隔开。
其中学生信息有:学号、姓名以及年龄。

提示:
需要查询String类中的split()方法进行字符串拆分,实参传递逗号(“,”)即可。
Student

package homework;

public class Student {

    private int id;
    private String name;
    private int age;

    public Student() {
        super();
    }
    public Student(int id, String name, int age) {
        super();

        setId(id);
        setName(name);
        setAge(age);

    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        if(age>=4&&age<=45)
        this.age = age;
        else{
            System.out.println("年龄不合理!!!");
        }
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        if(id>0)
        this.id = id;
        else{
            System.out.println("学号不合理!!!");
        }
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
    }

}

Test3

package homework;

import java.util.Scanner;

public class Test3 {
    public static void main(String[] args){
    //1.提示用户输入学生的人数并使用变量记录
        System.out.println("请输入班级的学生人数:");
        Scanner sc=new Scanner(System.in);
    //2.提示用户输入每个学生的信息并使用变量记录        
        int num=sc.nextInt();


        Student[] arr=new Student[num];
        for(int i=0;i<num;i++){
            System.out.println("请输入第"+(i+1)+"个学生的信息(学号,姓名,年龄):");
            String str=sc.next();
            //3.将用户输入的学生信息进行拆分并发入到Student类型的数组中

            String[] strs=str.split(",");
            arr[i]=new Student(Integer.parseInt(strs[0]),strs[1],Integer.parseInt(strs[2]));


        }   
        //4.在Student类型的数组中查找姓zhang的学生并打印出来。

        for(int i=0;i<arr.length;i++){
            if(arr[i].getName().startsWith("zhang")){
                System.out.println(arr[i]);
            }
        }

    }

}

1Calendar类

(1)基本概念
(2)常用方法

static Calendar getInstance() void set(int year,int month,int date,int date,int hourOfDay,int minute,int second) Date getTime() 用户根据当前调用对象得到Date类型 的对象

2.集合类(重点)

2.1基本概念

数组
- 本质就是一段连续的内容空间,用于存放多个相同类型的数据
- 可以通过下标访问
- 一旦声明,内存空间大小固定,无法更改
- 数组中元素可以是基本类型,也可以是引用类型

集合
- 内存空间可以连续,也可以不连续,可以存放多个类型不同的数据。
- 集合中部分支持下标访问,部分不支持
- 声明之后内存空间大小不固定,可以随时动态调整
- 集合插入和删除方便
- 集合中对的元素必须是引用类型,可以借助包装类

数组和集合本质上都是一种容器,,而集合类 就是指描述集合相关的相关类和接口等。

2.2 基本分类

集合框架主要分为两大类:java.util.Collection集合和java.util.Map集合
其中,Collection 集合主要存放元素的单元为:单个元素
其中Map集合中主要存放元素的单元为:单对元素。

Collection集合以后很少使用,更多的使用该集合的子接口:List集合,Queue集合、以及Setj集合。

2.3 Colletion 集合的常用方法

boolean add(E e)
boolean addAll(Collection

3.List集合(重点)

3.1基本概念

java.util.List接口是Collection接口的子接口,该接口的元素 有放入次序,允许重复
该接口的主要实现类有:ArrayList类、LinkedList类,Stack类、Vector类。
- 其中ArrayList类的底层实现 是采用动态数组实现的,增删不方便,支持随机访问。
- 其中Linkedlist类的底层是采用链表实现的,增删元素方便,访问不方便。
- 其中Stack类(栈)的底层是采用 动态数组实现的。该类是一种具有后进先出特性的数据结构。
- 其中Vector类的底层 试试采用动态数组的实现的,与ArrayList类相比,是属于线程安全的类,因此效率比较低,推荐使用ArrayList类。

3.2常用的方法

void add(int index.E element)
boolean addAll(int index,Collection

3.3 泛型机制

目前集合中虽然可以存放不同类型的数据,但集合中都是看做Object类型的数据去存放的,当需要从集合中取出数据 并表达数据原始类型是,可能需要进行强制类型转换,此时可能引发 类型转换异常,为了避免该错误的产生,从jdk1.5中开始支持泛型机制。

泛型机制就是指在 集合名称的右边使用 <数据类型>的方式明确要求集合中可以存放的元素类型,若存放不同类型的元素时,则编译报错。

如:
List ll=new LinkedList();
泛型的本质就是参数化类型,也就是将数据类型作为实参传递给形参E,在类体中 的所有E就变成了实参的数据类型。

4.Queue集合(重点)

4.1基本概念

java.util.Queue接口是Collection接口的子接口,和List接口是平级的关系

队列是一种具有先进先出特性的数据结构,简称FIFO(first in first out)
该接口的主要实现类:LinkedList类,该类在增删方面具有一定的优势。

4.2常用的方法

boolean offer(E e)用于将参数指定的元素放入当前集合,成功返回true,否则返回false
E poll() - 用于获取并移除该集合中的对手元素,若队列为空则返回null.
E peek()-用于获取集合中的队首元素并返回,若队列为空则返回null.

猜你喜欢

转载自blog.csdn.net/lizhidefengzi/article/details/79283749