Android_开发_Day15_集合与Lambad表达式
Android_开发Day15集合与Lambad表达式
目的:
了解集合与数组,并且能利用集合灵活的处理数据
技术:
<1> 集合Collection是一个抽象的接口是一个泛型,因此继承这个接口的子接口分为List接口和Set接口,List接口分别被ArrayList与LinkedList实现,而Set被HashSet实现。另一种接口Map接口,该接口是定义一种有映射关系的数组Key-Value,键值不能相同,但是值却可以相同。实现该接口的有HashMap。
<2> Collectioon 集合的常用方法:
添加元素:
add()
addall()ArrayList里面的方法,用于添加另一个集合
删除元素:
remove()删除一个对象,或者参数填索引值,这时就是子类ArrayList里面的方法
removeall()删除一个人集合
获取元素个数:
size()
是否包含一个元素:
contains(包含的元素)
是否为空:
isEmpty()返回值是true和false
是否相等:
equals()返回值也是true和false
清空:
clear()
<3> List接口的常用方法:List接口是继承Collectioon的,实现其接口的常用有ArrayList和LinkedList,因此我们来看一下ArrayList里面的常用方法:
添加元素:
add()可以加一个元素,加上参数还可以在某个位置添加元素
addAll()加上一个集合
访问元素:
get()参数是索引
修改元素:
set()参数是索引加要改的数
删除元素:
remove()参数是索引,还可以删除对象,要在索引前加上对象类型
removeAll()删除一个集合
清空元素:
clear()
取两个集合的交集的元素:
retainAll()参数是集合
访问某个元素在集合中的索引:
indexOf()参数是一个元素
lastIndexOf()参数还是元素但是与indexOf()是返回第一次出现的索引而它是返回最后一次出现的索引
将ArrayList转化成普通数组:
toArray()无参默认是返回Object类型的对象,有参就是自己想要的对象
获取数组的某个范围的子集合:
subList()参数是要取的子集的前后两个索引,返回值就是该子集合。
<4> 集合的遍历:
方法一:将该集合转化成Iterator迭代器,然后调用里面的hasNext()判断下一个元素是否存在,用next()方法取出元素。
方法二:用老式的for循环和foreach循环。
<5> Lambda表达式:变量名 -> 条件,意思就和条件表达式的是一样的,只是需要新定义一个变量,目的是为数组服务的,就像foreach循环一样,每次从数组中取出一个元素然后赋值给你新定义的那个变量,然后执行条件表达式,若满足则为true,不满足则为false。Lambda表达式的本质是来自当我们在类里面写一个方法时自己不想去写这个方法具体怎么实现而要借助一个只有一个方法的接口来实现时,我们就需要将这个接口作为一个参数传给我要写的这个方法,然后在我要写的这个方法中调用这个接口的方法以实现我想要的功能,但是要想使用接口的方法就必须要另一个类来实现这个接口,但是这样做未免也太麻烦了吧,因此Java允许用Lambda表达式来实现这个接口的方法,用法就是 参数 -> {代码语句},如果语句只有一行代码那就连大括号都可以不要,使用Lambda表达式需要注意接口只有一个方法。如果只有一个参数那就可以连参数类型都可以不要。
技术如何使用:
我们可以写一个小小的demo来练习一下,现在又几个人,又姓名年龄,将这几个人放到数组中,并找出有多少人年龄大于30岁,有几个人姓张。demo很简单,就不做过多的分析了,这里就直接放代码了:
class Test{
public static void main(String[] args){
Person person1 = new Person("张三", 30);
Person person2 = new Person("李四", 29);
Person person3 = new Person("王五", 31);
Person person4 = new Person("张家辉", 35);
Person person5 = new Person("蔡徐坤", 25);
Person person6 = new Person("古天乐", 39);
Person person7 = new Person("周杰伦", 38);
ArrayList<Person> lists = new ArrayList<>();
lists.add(person1);
lists.add(person2);
lists.add(person3);
lists.add(person4);
lists.add(person5);
lists.add(person6);
lists.add(person7);
int time1 = 0;
int time2 = 0;
for (Person person:lists){
if (person.age > 30){
time1++;
}
if (person.name.contains("张")){
time2++;
}
}
System.out.println("姓张的人数有:"+time2+"个"+" "+"年龄大于30岁的人有:"+time1+"个");
}
}
实际使用效果:
批注 2019-08-16 205431.jpg总结:
Java中的方法很多,但是我们真正能够用的方法也就那么几个,如果实在不行自己写也是可行的,况且自己写的方法自己最清楚该怎么用,因此我觉得可以把自己写的好的方法积累存起来,说不定哪天就用上了呢。