写点什么

【阿里 P8 大牛教你 Android 入门之路(java 篇,移动端开发工程师转型

用户头像
Android架构
关注
发布于: 刚刚
  • Java 反射

  • Java IO


其他面试点


以上内容都是 Java 中的基础知识,对于 Java 的学习很有帮助。其中集合、反射、IO 等都是面试常问知识点,是必须要掌握的,因此整理在本部分当中。

一、Java 集合类简介:

Java 集合大致可以分为 Set、List、Queue 和 Map 四种体系。


其中 Set 代表无序、不可重复的集合;List 代表有序、重复的集合;而 Map 则代表具有映射关系的集合。Java 5 又增加了 Queue 体系集合,代表一种队列集合实现。


Java 集合就像一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。从 Java 5 增加了泛型以后,Java 集合可以记住容器中对象的数据类型,使得编码更加简洁、健壮。

1.Java 集合和数组的区别:

①.数组长度在初始化时指定,意味着只能保存定长的数据。而集合可以保存数量不确定的数据。同时可以保存具有映射关系的数据(即关联数组,键值对 key-value)。


②.数组元素即可以是基本类型的值,也可以是对象。集合里只能保存对象(实际上只是保存对象的引用变量),基本数据类型的变量要转换成对应的包装类才能放入集合类中。

2.Java 集合类之间的继承关系:

Java 的集合类主要由两个接口派生而出:Collection 和 Map,Collection 和 Map 是 Java 集合框架的根接口。



图中,ArrayList,HashSet,LinkedList,TreeSet 是我们经常会有用到的已实现的集合类。


Map 实现类用于保存具有映射关系的数据。Map 保存的每项数据都是 key-value 对,也就是由 key 和 value 两个值组成。Map 里的 key 是不可重复的,key 用户标识集合里的每项数据。



图中,HashMap,TreeMap 是我们经常会用到的集合类。

二、Collection 接口:

1.简介

Collection 接口是 Set,Queue,List 的父接口。Collection 接口中定义了多种方法可供其子类进行实现,以实现数据操作。由于方法比较多,就偷个懒,直接把 JDK 文档上的内容搬过来。

1.1.接口中定义的方法


可以看出 Collection 用法有:添加元素,删除元素,返回 Collection 集合的个数以及清空集合等。其中重点介绍 iterator()方法,该方法的返回值是 Iterator<e style="box-sizing: border-box;">。</e>

1.2.使用 Iterator 遍历集合元素

Iterator 接口经常被称作迭代器,它是 Collection 接口的父接口。但 Iterator 主要用于遍历集合中的元素。Iterator 接口中主要定义了 2 个方法:



下面程序简单示范了通过 Iterator 对象逐个获取元素的逻辑。


public class IteratorExample {public static void main(String[] args){//创建集合,添加元素


Collection<Day> days = new ArrayList<Day>();for(int i =0;i<10;i++){Day day = new Day(i,i60,i3600);days.add(day);}//获取 days 集合的迭代器 Iterator<Day> iterator = days.iterator();while(iterator.hasNext()){//判断是否有下一个元素 Day next = iterator.next();//取出该元素//逐个遍历,取得元素后进行后续操作.....}}


}


注意:?当使用 Iterator 对集合元素进行迭代时,把集合元素的值传给了迭代变量(就如同参数传递是值传递,基本数据类型传递的是值,引用类型传递的仅仅是对象的引用变量


下面的程序演示了这一点:


public class IteratorExample {public static void main(String[] args) {List<MyObject> list = new ArrayList<>();for (int i = 0; i < 10; i++) {list.add(new MyObject(i));}


System.out.println(list.toString());


Iterator<MyObject> iterator = list.iterator();//集合元素的值传给了迭代变量,仅仅传递了对象引用。保存的仅仅是指向对象内存空间的地址 while (iterator.hasNext()) {MyObject next = iterator.next();next.num = 99;}


System.out.println(list.toString());}static class MyObject {int num;


MyObject(int num) {this.num = num;}


@Overridepublic String toString() {return String.valueOf(num


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


);}}}


输出结果如下:


[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[99, 99, 99, 99, 99, 99, 99, 99, 99, 99]


下面具体介绍 Collection 接口的三个子接口 Set,List,Queue。

2.Set 集合

简介

Set 集合与 Collection 集合基本相同,没有提供任何额外的方法。实际上 Set 就是 Collection,只是行为略有不同(Set 不允许包含重复元素)。


Set 集合不允许包含相同的元素,如果试图把两个相同的元素加入同一个 Set 集合中,则添加操作失败,add()方法返回 false,且新元素不会被加入。

3.List 集合

3.1.简介

List 集合代表一个元素有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List 集合允许使用重复元素,可以通过索引来访问指定位置的集合元素 。List 集合默认按元素的添加顺序设置元素的索引,例如第一个添加的元素索引为 0,第二个添加的元素索引为 1......


List 作为 Collection 接口的子接口,可以使用 Collection 接口里的全部方法。而且由于 List 是有序集合,因此 List 集合里增加了一些根据索引来操作集合元素的方法。

3.2.接口中定义的方法

void add(int index, Object element):?在列表的指定位置插入指定元素(可选操作)。

boolean addAll(int index, Collection<? extends E> c) :?将集合 c 中的所有元素都插入到列表中的指定位置 index 处。

Object get(index):?返回列表中指定位置的元素。

int indexOf(Object o):?返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。

int lastIndexOf(Object o):?返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。

Object remove(int index):?移除列表中指定位置的元素。

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
【阿里P8大牛教你Android入门之路(java篇,移动端开发工程师转型