为什么会出现集合类:
* 因为我们学习的Java语言是面相对象的编程语言,
* 而面相对象编程语言对事物的描述都是通过对象来体现的,我们为了
* 方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想
* 对多个对象进行存储,就不能是一个基本的变量,而应该是一个容器类型
* 的变量。
* 到目前为止我们学习过那些容器类型的数据呢?
* Stringbuilder、数组。 StringBuilder的结果是一个字符串类型不能满足我们的需求
* ,所以,我们目前只能选择数组,即对象数组。但是数组的长度是固定的,适应不了需求,
* 所以集合类就出现了。
* ArrayList的特点:
* 长度可变
* ArrayList<E>;
* 大小可变数组的实现
* <E>是一种特殊的数据类型,泛型。
* 如何使用呢?
* 出现E的地方我们使用引用数据类型即可。
* 举例:ArrayList<String>
* 注意,此实现不是同步的。如果多个线程同时访问一个 ArrayList 实例,而其中至少一个线程从结构上修改了列表,
* 那么它必须 保持外部同步。(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;
* 仅仅设置元素的值不是结构上的修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,
* 则应该使用 Collections.synchronizedList 方法将该列表“包装”起来。这最好在创建时完成,以防止意外对列
* 表进行不同步的访问:
* List list = Collections.synchronizedList(new ArrayList(...));
* 此类的 iterator 和 listIterator 方法返回的迭代器是快速失败的:在创建迭代器之后,除非通过迭代器自
* 身的 remove 或 add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会
* 抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不是
* 冒着在将来某个不确定时间发生任意不确定行为的风险。
*
* 注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。
* 快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正
* 确性而编写一个依赖于此异常的程序是错误的做法:迭代器的快速失败行为应该仅用于检测 bug。
*
* 构造方法摘要
* ArrayList()
* 构造一个初始容量为 10 的空列表。
*添加元素的功能:
*public boolean add(E e)将指定的元素添加到此列表的尾部。
*public void add(int index, E element)将指定的元素插入此列表中的指定位置。
* 向右移动当前位于该位置的元素(如果有)以及所有后续元素(将其索引加 1)。
public class ArrayListDemo {
public static void main(String[] args) {
//创建集合对象
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("周星星");
arrayList.add("helloword");
System.out.println("arraylist:"+arrayList);
System.out.println("=============================");
arrayList.add(1, "没媳妇");
System.out.println("arraylist:"+arrayList);
}
}
ArrayList删改查方法
* A:获取元素
public E get(int index):返回指定索引处的元素
B:集合长度
public int size():返回集合中的元素的个数
C:删除元素
public boolean remove(Object o):删除指定的元素,返回删除是否成功
public E remove(int index):删除指定索引处的元素,返回被删除的元素
D:修改元素
public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
public class ArrayListDemo2 {
public static void main(String[] args) {
//创建集合对象
ArrayList<String> aList = new ArrayList<String>();
//添加元素
aList.add("hello");
aList.add("java");
aList.add("its me");
System.out.println(aList);
//A:获取元素
//public E get(int index):返回指定索引处的元素
System.out.println(aList.get(0));
System.out.println(aList.get(1));
System.out.println(aList.get(2));
//B:集合长度
//public int size():返回集合中的元素的个数
System.out.println(aList.size()+"个");
//C:删除元素
//public boolean remove(Object o):删除指定的元素,返回删除是否成功
System.out.println(aList.remove(" "));
//public E remove(int index):删除指定索引处的元素,返回被删除的元素
System.out.println(aList.remove(1));
//D:修改元素
//public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
System.out.println(aList.set(1, "Android"));
for (int i = 0; i < aList.size(); i++) {
String string = aList.get(i);
System.out.println(string);
}
}
}
ArrayList集合的遍历
/*
* ArrayList集合的遍历
*/
public class ArrayListDemo3 {
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("hello");
arrayList.add("word!");
arrayList.add("java");
for (int i = 0; i < arrayList.size(); i++) {
String string = arrayList.get(i);
System.out.println(string);
}
}
}