今日内容:
- (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.