java容器类类库的用途是保存对象,并将其划分为两个不同的概念:Collection 和 Map
1、Collection 一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入顺序来保存,Set不能有重复的元素,Queue按照排队规则来确定对象产生的顺序(通常与被插入的顺序相同)
2、Map 键值对
List apples = new ArrayList();表明这个list里面只能够添加Apple类,同时ArrayList 已经被上转为List类型
3、容器的打印toString()能够很好的显示对象信息,没有正常toString()
后的@~~~~~一系列的字符床
4、collection 的添加是add() ,Map的添加是put()
5、迭代器Iterator
eg:
List<Pet> pets = Pets.ArrayList(3);
Iterator it = pets.iterator();
while(it.hasNext()){
Pet p = it.Next();
System.out.println(p.id()+":"+p);
}
//output:
0:Rat
1:Manx
2:Cymric
三种主要类型的集合:
1、 Set(规则类):存储一组不重复的元素
2、 List(线性表):存储一个有序集合
3、 Queue(队列):存储用先进先出方式处理的对象(例如:打印)
泛型:
public class ElementDemo<E> {
Object[] obj = new Object[999];
public static void main(String[] args) {
ElementDemo<Integer> demo = new ElementDemo<>();
demo.add(12);
ElementDemo<String> str = new ElementDemo<>();
str.add("sss");
}
public void add(E e){
}
}
List
多态:使用list接口的一个子类ArrayList进行实现
List list1 = new ArrayList<>()
集合的遍历:
① For循环
for(int i =0; i<list.size(); i++){
System.out.print(list.get(i)+”,”)
}
② For each
for(String str : list){
System.out.print(str+”,”)
}
③ 迭代器遍历 (方法相对比较固定)
Iterator<String> it = list.iterator();
While( it.hasNext()){
System.out.print( it.next() +”,”)
}
还可以使用ListIterator
ListIterator<String> listIt = list.ListIterator();
While(listIt.hasNext()){
System.out.print(listIt.next() + “,”)
}
使用Iterator 与ListIterator 迭代器的区别
1、 ListIterator不止可以向后访问,还可以向前访问
2、 ListIterator 可以修改集合中的元素
ArrayList(数组线性表)
1、是一个大小可变的数组,在内存中分配连续的空间。
2、遍历元素和随机访问元素的效率比较高。
缺点:
插入元素所有的后面的都要变,效率不高,所以建议使用
LinkedList(链表)
1、 采用链表存储方式
2、 提供从线性表两端提取、插入和删除元素的方法
3、 插入、删除元素的效率比较高(随机访问的效率不高)
使用list进行数组的操作