1、容器的概念
在Java当中,如果有一个类专门用来存放其它类的对象,这个类就叫做容器,或者就叫做集合,集合就是将若干性质相同或相近的类对象组合在一起而形成的一个整体
2、容器与数组的关系
之所以需要容器:
1、数组的长度难以扩充
2、数组中数据的类型必须相同
容器与数组的区别与联系:
1、容器不是数组,不能通过下标的方式访问容器中的元素
2、数组的所有功能通过Arraylist容器都可以实现,只是实现的方式不同
3、如果非要将容器当做一个数组来使用,通过toArray方法返回的就是一个数组
示例程序:
package IT; import java.util.ArrayList; import java.util.Iterator; //数组的所有功能通过ArrayList容器都可以实现,只是实现的方式不同 public class App { public static void main(String[] args) { ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList.add(12); arrayList.add(10); arrayList.add(35); arrayList.add(100); Iterator<Integer> iterator = arrayList.iterator();//获取容器的迭代器 while(iterator.hasNext()) { Integer value = iterator.next();//获取当前游标右边的元素,同时游标右移--> System.out.println(value); } System.out.println("通过ArrayList容器获取一个数组arr:"); Object[] arr = arrayList.toArray(); for(int i=0;i<arr.length;i++) { System.out.println(arr[i]); } } } |
输出结果:
12 10 35 100 通过ArrayList容器获取一个数组arr: 12 10 35 100 |
3、容器常用的几个方法
boolean add(Object obj):向容器中添加指定的元素
Iterator iterator():返回能够遍历当前集合中所有元素的迭代器
Object[] toArray():返回包含此容器中所有元素的数组。
Object get(int index):获取下标为index的那个元素
Object remove(int index):删除下标为index的那个元素
Object set(int index,Object element):将下标为index的那个元素置为element
Object add(int index,Object element):在下标为index的位置添加一个对象element
Object put(Object key,Object value):向容器中添加指定的元素
Object get(Object key):获取关键字为key的那个对象
int size():返回容器中的元素数
10实例程序:
package IT; import java.util.ArrayList; public class App { public static void main(String[] args) { ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList.add(12); arrayList.add(10); arrayList.add(35); arrayList.add(100); System.out.println("原容器中的元素为:"); System.out.println(arrayList); System.out.println("\n"); /*******重置set(int index,Object element)*******/ System.out.println("将下标为1位置的元素置为20,将下标为2位置的元素置为70"); arrayList.set(1, 20); arrayList.set(2, 70); System.out.println("重置之后容器中的元素为:"); System.out.println(arrayList); System.out.println("\n"); /*******中间插队add(int index,Object element)*******/ System.out.println("在下标为1的位置插入一个元素,-----插入元素:此时容器后面的元素整体向后移动"); arrayList.add(1, 80);//在下标为1的位置插入一个元素,此时容量加1,-----位置后面的元素整体向后移动 System.out.println("插入之后容器中的元素为:"); System.out.println(arrayList); System.out.println("插入之后容器中的容量为:"); System.out.println(arrayList.size()); System.out.println("\n"); /*******中间删除元素remove(int index)*******/ System.out.println("将下标为3位置的元素70删除,-----删除元素:此时容器位置后面的元素整体向前移"); arrayList.remove(3); System.out.println("删除之后容器中的元素为:"); System.out.println(arrayList); System.out.println("删除之后容器中的容量为:"); System.out.println(arrayList.size()); } } |
运行结果:
原容器中的元素为:
[12, 10, 35, 100]将下标为1位置的元素置为20,将下标为2位置的元素置为70
重置之后容器中的元素为:
[12, 20, 70, 100]在下标为1的位置插入一个元素,-----插入元素:此时容器后面的元素整体向后移动
插入之后容器中的元素为:
[12, 80, 20, 70, 100]
插入之后容器中的容量为:
5将下标为3位置的元素70删除,-----删除元素:此时容器位置后面的元素整体向前移
删除之后容器中的元素为:
[12, 80, 20, 100]
删除之后容器中的容量为:
4、容器的分类
容器分为Set集、List列表、Map映射
Set集合:由于内部存储结构的特点,Set集合中不区分元素的顺序(即使存放的类实现了compareTo方法,也是没用的),不允许出现重复的元素(用户自定义的类有的时候需要实现相应方法),TreeSet容器特殊,元素放进去的时候自然而然就有顺序了,Set容器可以与数学中的集合相对应:相同的元素不会被加入。
List列表:由于内部存储结构的特点,List集合中区分元素的顺序,且允许包含重复的元素。List集合中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素—有序,可以重复
Map映射:由于内部存储结构的特点,映射中不能包含重复的键值,每个键最多只能映射一个值,否则会出现覆盖的情况(后面的value值会将前面的value值覆盖掉),Map是一种把键对象和值对象进行映射的集合,即Map容器中既要存放数据本身,也要存放关键字:相同的元素会被覆盖