容器与数组
数组:存储的基本数据类型/对象,但是数组的尺寸恒定。
容器:存放对象Object,可自定义调整自己的尺寸
容器的API类图
Set中元素无序,但是不能有重复的元素;
List必须按照插入的顺序保存元素,元素可重复;
Map存放成对的**“键值对”对象**,使用键来查找值
Collection接口
collection接口是存放一组对象的方法
方法:
- int size()
- boolean isEmpty()
- boolean add(object element)
- boolean remove(object element)
- Iterator iterator()
在移除某个具体对象之时,需要提前判断该对象是否在容器内,此时需要用到equals方法判断两个对象是否相等。
故定义类时需要给出自定义的equals方法。
List接口
-
实现类:ArrayList
数组实现,随机读取元素,修改时需要移动大量数据 -
实现类:LinkedList
链表实现,修改元素改变指针即可
方法:
-object get(int index)
- object set(int index,object element):返回类型为object,返回的是旧的那个对象
- object remove(int index):返回的是刚在原来在index位置上的对象
- void sort(List):对list容器内的元素排序,实现代码为Collections.sort(List1);
- int binarySearch(List,object):对于顺序的List容器,采用折半查找的方法查找特定对象
List中的元素可排序,即其存放的对象的类需要实现comparable接口,并且重写他的compareTo()方法
Set接口
set中元素无序,但是不可以有重复
Iterator接口
- 迭代器,实现对容器内元素的遍历操作
- 方法:
- iterator()来返回一个Iterator
- next()获得序列中的下一个元素,通过next()获得的元素类型为Object类型,需要强转成需要的类型
- hasNext()检查序列中是否还有元素
- remove()将迭代过程中删除元素
Map接口
实现类:HashMap 和TreeMap
- 存储键值对,键值不可重复(键、值皆为对象)
- 利用hashCode()函数判断键值对是否相等
- 对基础对象具有自动打包功能,即自动将int转换成Integer对象 eg:map1.put(“two”, 2);
- 同时对基对象也有自动解包功能
方法:
- void put(key,value),存入该键值对
- Object get(key),由键key取出所对应的value
泛型(generic)
- 定义集合的同时指定集合中对象的类型
- 例如:
List<String> c = new ArrayList<String>();
- 表明List中只可以装String类型的对象
- 各方法返回的是< >中指定的对象类型,不需要再次强转
容器总结:
array读快改慢,linked改快读慢,hash介于二者之间