Android开发Collection 集合的定义和使用

释放双眼,带上耳机,听听看~!

目的:

掌握Collection集合的定义和使用方法

相关技术、及其使用

1、Collection集合的作用:可以定义一个随时改变的数组

2、定义Collection集合的相关操作:
Collection 抽象接口 定义集合的相关操作
|– List 列表 数组 接口 特点 :有序 可以重复
|–ArrayList
|– LinkedArrayList
|– Set “集合” 特点 : 无序 不重复
|—HashSet

3、改变集合中的元素方法:
增加一个对象 :add 在指定位置添加 add(i,o)

//添加一个对象
t1.add("jack");
t1.add("Merry");
System.out.println(t1);
score.add(3);//在末尾添加
score.add(0, 1);//在指定位置插入

删除一个对象 : remove 移除指定位置的对象 remove(i,o)

        t1.remove("jack");
score.remove(0);//删除指定位置的元素
score.remove((Integer) 2);//删除指定的对象

获取元素个数 :size

System.out.println(t1.size());

删除所有元素 ,清空 : clear

t1.clear();

判断某个集合中是否含有某个元素 :contains

  //判断是否包含一个元素
if (t1.contains("Merry")) {
System.out.println("有Meryy");
} else {
System.out.println("没有Meryy");
}

判断某个集合是否为空 : isEmpty

  //判断是否为空
if (t1.isEmpty()) {
System.out.println("是空的");
}

判断两个集合是否相同(比较两个集合里面地内容) : equals

   if (t1.equals(t2)) {
System.out.println("两个集合相同");
} else {
System.out.println("两个集合不相同");
}

取两个集合的交集:retainAll

   ArrayList<Integer> a3 = new ArrayList<>();
a3.add(1);
a3.add(2);
score.retainAll(a3);//取两个集合的交集
System.out.println(a3);

访问某个对象在某个位置的索引 :indexOf访问初始位置 lastIndexOf访问最后一次出现的位置

     ArrayList<Integer> a4 = new ArrayList<>();
a4.add(1);
a4.add(2);
a4.add(2);
a4.add(1);
System.out.println(score.indexOf(1));//如果所访问的元素有多个相同值访问第一次出现的位置
System.out.println(score.lastIndexOf(1));//最后一次出现的位置

获取某个范围里面的对象 subList(i,o)

 List<Integer> integers = a4.subList(1, 2);
System.out.println(integers);

修改某个位置的值: set(i,0)

   //修改一个元素set set(地址,值)
score.set(0, 0);
System.out.println(score);

注:集合里面只能存放对象

4、集合的遍历:
(1)使用使用Iterator来遍历
hasNext 判断是否有元素
next 获取下一个对象
remove 删除当前遍历后的对象
(2)for -each (增强for循环) 快速循环
(3)for- i循环
ArrayList (连续的内存空间 )
优点:
访问方便 通过get ()方法就能访问
缺点:
元素的删除和添加效率低
LinkedList内部使用链表链接 不一定连续(基本不连续)
优点:增减删除效率高 缺点:访问

5、基本数据类型对应的包装类
byte char int long float double boolean
Byte Char Integer Long Float Double Boolean
ArrayList里面自动将基本数据类型包装为对应的类

6、将ArrayList转变为普通数组 toArray

7、lambda函数

//1、使用方式 定义一个类实现接口
ArrayClass ac  = new ArrayClass();
int [] num = {1,2,3,4,5,6};
PXDClass pc = new PXDClass();
ac.test(num,pc);
//2、使用匿名类
ArrayClass ac  = new ArrayClass();
int [] num = {1,2,3,4,5,6};
ac.test(num, new Show() {
@Override
public void customShow(int element) {
System.out.println(element);
}
});
//3、使用Lambda
//如果参数是一个接口列对象 且接口里面只有一个方法
//可以省略方法名
ArrayClass ac  = new ArrayClass();
int [] num = {1,2,3,4,5,6};
ac.test(num,(int element) ->{
System.out.println(element);
});
//4、如果只有一个参数 参数类型可以省略
ArrayClass ac  = new ArrayClass();
int [] num = {1,2,3,4,5,6};
ac.test(num,element -> {
System.out.println(element);
});
//5、 如果代码块里面只有一行语句 大括号可以省略
ArrayClass ac  = new ArrayClass();
int [] num = {1,2,3,4,5,6};
ac.test(num,element -> System.out.println(element));

8、自己写一个比较器:

class PXDCompare implements Comparator {
//  什么时候需要手动创建比较器
//如果系统默认提供的方法不能完成我们的比较
//1、参与比较的对象必须要
@Override
public int compare(Object o, Object t1) {
int mo = (int)o;
int mt1 = (int)t1;
return mo-mt1;
}
}

PS

今天所讲的Collection集合的使用比较简单,但是,还是对lambda 有点不是太了解。感觉今天讲的知识点虽然很枯燥,但是有必须要掌握。

人已赞赏
Android文章

Android开发图形动画

2020-2-1 12:54:39

Android文章

Android开发ImageView图片无法显示的解决方法

2020-2-1 13:30:34

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索