android list迭代,Android Day16 Java中ArrayList的使用及lambda表达式

内容

ⅠArrayList

Ⅱ集合

ⅢLambda表达式

具体内容

ⅠArrayList

1.ArrayList的介绍

ArrayList用于存储对象,与数组不同,数组一旦创建,长度固定,但是ArrayList的长度是动态的,不受限制,可以存储任意多的对象,但是只能存储对象,不能存储原生数据类型例如int

2.java.util.ArrayList的一些方法

创建 array/ArrayList

ArrayList list = new ArrayList<>();

访问一个元素

list.get(index);

更新一个元素

list.set(index, “London”);

返回大小

list.size();

排序

java.util.Collections.sort(arraylist)

添加一个新元素

list.add(“London”);

插入一个新元素

list.add(index, “London”);

删除一个元素

list.remove(index);

删除一个元素

list.remove(Object);

删除所有元素

list.clear();

3.由于ArrayList只能存储对象,不能存储原生数据类型数据,下面的代码是错误的:ArrayList list = new ArrayList<>();

只能写成:ArrayList list = new ArrayList<>();

4.List接口继承Collection

方法两者相同

(1)ArrayList 使用连续的内存空间

优点 访问方便

缺点 删除 添加

大量访问时使用

(2)LinkedArrayList 内部使用链表实现 不一定连续(基本不连续)

优点 增加删除效率高

缺点 访问

删改时使用

5.使用迭代器Iterator实现集合的遍历

Iterator都最终实现接口Iterator,Iterator接口中包含三个基本方法,next(), hasNext(), remove(),其中对于List的遍历删除只能用Iterator的remove方法

(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

(2) 使用next()获得序列中的下一个元素。

(3) 使用hasNext()检查序列中是否还有元素。

(4) 使用remove()将迭代器新返回的元素删除。

ⅡCollection接口

1.Collection下有三大接口:List(列表)、Set(集合)、Queue(队列)

2.Collection接口的方法

Collection list = new ArrayList();

list.add("Jack");

list.add("Merry");

System.out.println(list);

3.集合的遍历

使用Iterator遍历

hasNext 判断是否有元素

next 获取到下一个对象

remove 删除当前遍历过后的对象

ⅢLambda表达式

nums.removeIf(ele -> ele % 2 == 0);

for (Integer obj : nums) {

if (obj % 2 == 0) {

nums.remove(obj);

}

}

for (int i = 0; i < nums.size(); i++) {

Integer obj = nums.get(i);

if (obj % 2 == 0) {

nums.remove(i);

}

}

2.手动创建比较器(如果系统默认提供的方法不能完成比较)

class GYFCompare implements Comparator{

@Override

public int compare(Object o, Object t1) {

int mo = (int) o;

int mt1 = (int)t1;

return mo-mt1;

}

}

Ⅳdemo

创建一个类Person:name age属性

创建ArrayList对象保存多个Person对象

1.统计年龄大于30的人数

2.统计名字中有张的人数

public class MyClass {

public static void main(String[] args) {

ArrayList people = new ArrayList<>();

Person xw = new Person("王",31);

Person xs = new Person("傻",24);

Person xq = new Person("齐",25);

Person xt = new Person("天",36);

Person xz = new Person("张",31);

people.add(xw);

people.add(xs);

people.add(xq);

people.add(xt);

people.add(xz);

//使用sort方法进行统计

a1.sort(Comparator.comparingInt(Integer::intValue));

a1.sort(new Comparator() {

@Override

public int compare(Integer integer, Integer t1) {

return integer-t1;

}

});

}

}

class Person {

String name;

int age;

public Person(String name, int age) {

this.name = name;

this.age = age;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值