目录
泛型
作用:将数据类型作为参数传递
1.定义:<自定义字母1,自定义字母2,....>
如:<k,v>
泛型可以理解为是数据类型的占位符,没有使用时无法确定其数据类型
Integer a1=test(4);
double a2=test(1.2);
String a3=test("555");
}
public static <K>K test(K k) {//<K>表示占个位,之后的K表示返回值,(K k)表示传入参数
return k;
}
可以看到没有报错,泛型充当了占位
2.使用
在方法上使用
语法:
访问权限修饰符 修饰符 <自定义泛型> 返回值类型 方法名(形参列表){
方法体
}
优点:该方法任何一处使用不确定的数据类型的地方都可以使用该自定义的泛型代替
public <A> A test1 (A a){
return a;
}
在类上使用
语法:
访问权限修饰符 class 类名<自定义泛型>{
}
优点:该类的任何一处不确定的地方都可以使用自定义泛型代替
public class ClassTest <I> {
private I i;
}
在接口上使用
语法:
访问权限修饰符 interface 接口名<自定义泛型>
优点:在接口中使用不确定的数据类型的地方都可以用自定义的泛型代替
注意:
公共常量处不可以使用
公共静态方法不能使用
default修饰的方法可以使用
抽象方法可以使用
注意:泛型只能传递引用数据类型,但是八大基本类型有自动拆箱与自动装箱,不用影响。
集合
概念:存储一组数据类型相同的数据的容器
特点:1.长度可变
2.只能存储引用数据类型
3.基本数据类型都有其引用
体系结构
Collection(接口):所有集合类的顶级接口
List(接口):Collection的子接口
ArrayList:List的子类
Vector:List的子类
LinkedList:List的子类
Set(接口):Collection的子接口
HashSet:Set的子类
LinkedHashSet:Set的子类
TreeSet:Set的子类
Queue(接口):Collection的子接口
此为 队列
1.所有集合类的对象都可以转换为Collection的对象
2.Collection提供的方法是所有集合类对象用的方法
3.子类对象转换为父类对象后不能再使用子类特有的属性和方法
List与set的区别:
List:有序,有下标,数据可重复
Set:无序,无下标,数据不可重复
这里的有序无序是指存入顺序与取出顺序一致
Collection
提供的方法:
因为Collection是接口,无法直接创建对象, 所以创建其子类对象,转换为Collection的接口对象,此时Collection的接口对象能调用的方法都是Collection接口提供的
1.增 boolean add( 丢进去的元素);
作用:一次添加一个元素
参数:本次添加的元素
返回值:是否添加成功
Collection<String> a1 = new ArrayList<String>();
System.out.println("加之前"+a1);
a1.add("李岁");
a1.add("李火旺");
a1.add("白淼");
a1.add("季灾");
System.out.println("加之后");
System.out.println(a1);
boolean addAll(丢进去的集合);
作用:一次添加一个集合数据
参数:本次添加的集合
返回值:是否添加成功
Collection<String> a2 = new ArrayList<String>();
a2.add("高志坚");
a2.add("丹阳子");
a2.add("易东来");
System.out.println(a2);
a1.addAll(a2);
System.out.println(a1);
2.删
boolean remove(删除的指定元素)
作用:一次删除一个元素
参数:被删除的元素
返回值:是否添加成功
注意:如果删除的元素不在集合中会删除失败
如果存在多个同一元素,只能删除第一个
Collection<String> a1 = new ArrayList<String>();
System.out.println("加之前"+a1);
a1.add("李岁");
a1.add("李火旺");
a1.add("白淼");
a1.add("季灾");
a1.add("季灾");
System.out.println(a1);
a1.remove("季灾");
System.out.println(a1.remove("静心"));
System.out.println("删之后");
System.out.println(a1);
有同名的只删除了第一个元素
boolean removeAll(删除的指顶的指定一组数据)
作用:删除一组数据
参数:被删除的数据
返回值:是否删除成功
注意:只删除一个元素也算成功
删除集合中所有指定该数据
Collection<String> a3 = new ArrayList<String>();
a3.add("丹阳子");
a3.add("易东来");
System.out.println(a3);
a1.removeAll(a3);
System.out.println(a1);
Collection<String> a4 = new ArrayList<String>();
a4.add("季灾");
a4.add("北风");
System.out.println(a4);
a1.removeAll(a4);
System.out.println(a1.removeAll(a4));
System.out.println(a1);
clear()
作用清空所有数据
a1.clear();
System.out.println(a1);
3.查
size()
作用:获取集合长度
boolean contains(o)
作用:判断集合中是否存在指定的元素
参数:指定的元素
返回值:是否存在
boolean containsAll(c)
作用:判断集合中是否存在指定的一组元素
参数:指定的一组元素
返回值:是否存在
注意:只有全部包含才返回true
boolean isEmpty():
作用:判断是否为空集合(空集合:集合中没有存储元素)
返回值:是否为空
注意:空集合与空(null)不一样
4.特殊的,迭代器
iterator();
作用:获得迭代器
迭代器提供的方法:
boolean hasNext()
作用:判断集合中是否还有下一个元素
next();
作用:移动到下一个元素,并获取该元素
Iterator<String>iterator=a1.iterator();
while (iterator.hasNext()) {//hasNest()返回值为boolean
String str=iterator.next();//next()返回值为 字符串
System.out.println(str);
}
System.out.println("--------");
for (String string : a1) {
System.out.println(string);