泛型
概念:
将数据类型作为参数进行传递
定义:
<K,D,F,?>
使用
1.在方法上使用
public class Test {
public static void main(String[] args) {
Integer i = test(1);
String str = test("123");
Test t = new Test();
Test test = test(t);
}
/**
* 要求,传入的参数类型就是返回值类型
*/
public static <X> X test(X str) {
return str;
}
/**
* 可以传入任何一种类型
*/
public static <X,Y> void test01(X str,Y y,Y y2) {
}
}
2.在类中使用
public class Demon01<X,Y> extends Object{
private X name;
private Y age;
private X sex;
public Demon01() {
super();
}
public Demon01(X name, Y age, X sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public X getName() {
return name;
}
public void setName(X name) {
this.name = name;
}
public Y getAge() {
return age;
}
public void setAge(Y age) {
this.age = age;
}
public X getSex() {
return sex;
}
public void setSex(X sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Demon01 [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
3.在接口上使用
public interface Demon02<K> {
void test();
}
//注意 : 本类后 和 实现接口的类后 都要写 泛型
class MyTest<K> implements Demon02<K>{
K k ;
@Override
public void test() {
// TODO Auto-generated method stub
System.out.println("泛型"+ k);
}
}
总结:
传入的时什么数据类型,取出的就是什么数据类型
集合
概念:
存放一组数据类型相同的数据,必须是,引用数据类型,且长度可变
体系::
Collection 接口:
特点:
无序 存储顺序 与 取出顺序不一致
方法:
增加:
add(数据); 增加一条数据
addAll(Collection< ? extends E> c); 将指定数据从集合中删除
删除:
remove(数据); 删除一条数据
removeAll(Collection < ? extends E > c); 将子集中的数据从集合中删除
clear();清空所有数据
查询:
int size(); 获取集合中数据的个数
contains(数据); 判断指定元素是否在集合中存在
containsAll(Collection <? extends E> c); 判断子集集合中的元素的所有数据是否在集合中存在
Iterator<E> iterator(); 迭代器
其它:
isEmpty();是否为空
toArray(); 转换为数组 只能是Object[ ];
子接口:
List:
特点:
有序 - 有下标
子类特有的方法:
增加:
一次插入一个数据,1参:插入的位置,2参:插入数据
void add (int index, E element);
一次插入一组数据,参数1:插入的位置;2参:插入的数据
void addAll(int index , Collection <? extends E> c);
删除:
按照下标删除指定位置的数据
remove(int index);
修改:
参数1:修改数的下标 参数2:修改的数据
set(int index , E element);
查询:
获取指定位置的元素,参数下标
get(int index);
子类:
ArrayList jdk1.2 线程不安全的
数据结构 数组
特点: 查询快,增删比较慢
Vector jdk1.0 线程安全的
数据结构: 数组
LinkedList jdk1.2 线程不安全的
数据结构: 链表
特点:增删速度快 , 查询速度慢
Set
特点:无序 无下标 不能重复
子类特有的方法, 没有全部是依靠父类
子类:
HashSet jdk1.2线程不安全
数据结构:链表 + 红黑树(基于哈希表)
LinkedHashSet jdk 1.4 线程不安全的
数据结构:链表 + 红黑树 (基于哈希表) + 链表
特点:有序
TreeSet
数据结构:链表 + 红黑树
方案一:
数据自身拥有比较性
1. 让储存数据的类实现 CompareTo 接口
2.重写compareTo方法
方法二:
提供比较器
创建TreeSet对象的时候,传入比较器的对象,
本质: 匿名内部类
时间
//与时间相关的
Date date = new Date();
long time = date.getTime();
System.out.println(time);
System.out.println(date.toString());
//获取当前系统的时间
Calendar data = Calendar.getInstance();
System.out.println(data);
String string = data.toString();
System.out.println(string);
Date time2 = data.getTime();
System.out.println(time2);
/**
* y:年
* M:月
* d:当月的第多少天
* h:12小时制
* H:24小时制
* m:分钟
* s:秒
*/
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy - MM - dd : HH - mm - ss");
String format = simpleDateFormat.format(time2);
System.out.println(format);