ArrayList集合
集合
◆面向对象语言对事物的体现都是以对象的形式,所以为了方便对
多个对象的操作,就需要对对象进行存储,集合就是存储对象最
常用的一-种方式。Java所有的集合类都位于java.util包下。
◆集合与数组的区别
数组和集合类同是容器,数组虽然也可以存储对象,但其长度是
固定的,而集合的长度是可变的。
●数组只能存储同种数据类型的数据,包含基本数据类型和对象引
用类型,而集合只能存储对象,并且可以存储不同类型的对象。
集合框架
Collection是单列集合类的顶层接口,Collection存储的是一-组
不唯一、无序的对象。 JDK不提供直接继承自Collection的类,
它提供了更具体的子接口的实现,如Set和List。
●List接口:存储的数据是不唯一、有序 (插入顺序)的对象
●Set接口 :存储的数据是唯一、无序的对象
◆Map是双列集合类的顶层接口, Map中存储的是一组键值对象
( key-value), 提供了key到value的映射,键是不可以重复的。
●Map接口的实现类: HashMap实现类、TreeMap实现类
集合中的接口及类都是泛型的。没加泛型,默认取出是object
类型,如果要调用对象里的属性,需要进行强转。
![Collection是单列集合类的顶层接口,Collection存储的是一-组
不唯一、无序的对象。 JDK不提供直接继承自Collection的类,
它提供了更具体的子接口的实现,如Set和List。
●List接口:存储的数据是不唯一、有序 (插入顺序)的对象
●Set接口 :存储的数据是唯一、无序的对象
◆Map是双列集合类的顶层接口, Map中存储的是一组键值对象
( key-value), 提供了key到value的映射,键是不可以重复的。
●Map接口的实现类: HashMap实现类、TreeMap实现类
集合中的接口及类都是泛型的。没加泛型,默认取出是object
类型,如果要调用对象里的属性,需要进行强转。]
Iterator接口和Collection接口、List接口
Iterator接口:
Iterator接口表示对集合进行迭代的迭代器。除了Map集合之外,
都能通过Iterator来对集合中的元素进行遍历。
◆Iterator常用方法
●hasNext() :判断是否还有下一个元素,有就返回true
●next() :返回要访问的下一元素
●remove() :将迭代器新返回的元素删除
◆使用迭代器逐一 访问Collection中的每一个元素
Iterator it=collection.iterator(); //获得一 个迭代器 while(it.hasNext()){
Object obj=it.next(); //得到下一个元素 }
Coliection接口:
Collection接口提供了添加元素、删除元素以及-些其他方法,由于List
接口和Set接口等都继承了Collection接口,因此这些方法对List集合和
Set集合都是通用的。
List接口:
List接口直接继承自Collection接口。List集 合代表一个元素有序并且可重
复的集合,集合中每个元素都有对应的顺序索引。
◆List接口新增的常用方法
( 1 ) public Object get(int index)–根据下标返回列表中的元素。
( 2 ) public Object add(int index, Object element)–在列表的指定位置插入
指定元素,将当前处于该位置的元素(如果有的话)和所有后续元素向右移动。
( 3 ) public Object set(int index,Object element)–用指定元素替换列表中 指定位置的元素。
( 4 ) public Object remove(intindex)–移除列表中指定位置的元素。
ArrayList类
ArrayList是List接口的直接实现类,实现了可变的数组功能。
优点和缺点
◆优点
●允许包含所有元素,包括NULL ,使用ArrayList可以根据索引位置对集合进行快速地随机访问。
◆缺点
●向指定的索引位置插入对象或删除对象的速度较慢,因为向索引位置插入对象时会将指定索引|位置及之后的所有对象相应向后移动一位。
ArrayList构造方法
●Arraylist() :构造了一个空的列表。
> ArrayList<String> list=new ArrayList<String>();
从JDK7开始,语句可简化为:
ArrayList<Integer> list=new ArrayList<>();
●ArrayList(int initialCapacity)构造了一个指定大小但内容为空
的列表。initialCapacity参数就是初始容量大小。
> ArrayList<Integer> list=new ArrayList<Integer>(7);
注意: ArrayList类只支持对象类型,不支持基本数据类型,如需要则使用对应的包装类。
◆增加元素到列表中
●boolean add(Element e)–增加指定元素到列表尾部。
●void add(int index, Element e)–增加指定元素到列表指定
◆删除列表中的元素
●E remove(int index)–删除列表中指定位置的元素, E为对应的元 素类型。
●boolean remove(Object0)-删除列表中首次出现的指定元素 (如果存在)。
●void clear()–从列表中删除所有元素。
列表元素的遍历
1.使用普通for循环:
List<String> list = new ArrayList<>();
// 假设列表中包含字符串元素
for (int i = 0; i < list.size(); i++) {
String element = list.get(i);
System.out.println(element);
}
2.使用增强for循环(foreach循环):
List<String> list = new ArrayList<>();
// 假设列表中包含字符串元素
for (String element : list) {
System.out.println(element);
}
3.使用迭代器(Iterator)进行遍历:
List<String> list = new ArrayList<>();
// 假设列表中包含字符串元素
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
两种创建列表方式的区别
ArrayList<String> list1=new ArrayList<String>();
List<String> list2=new ArrayList<String>();
◆上面两者相比, list1比list2的可调用的方法多。因为List是
ArrayList的父类,即通过接口引用引用实例化对象的时候,只能
调用List自己的方法,不能调用ArrayList本身包含的方法。
◆通过父类弓|用子类对象,只能调用父类自己的方法,不能调用子
类的方法。
感兴趣的同学点击这里了解更多大神讲解