——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
1. 集合,就存储对象,不接收基本数据类型
2. 集合和数组的区别
|– 集合长度可变
|– 数组长度固定
|– 集合只存储对象,数组存对象,存基本数据类型
Collection接口中的常用方法
|– add()向集合中存储对象
|– size()返回集合中存储元素的个数
|– contains()判断对象是否包含在集合中
|– iterator()返回迭代器对象List派系
|– 有序的集合(怎么存的,怎么取出)
|– 存储在集合中的元素都有下标
|– 可以存储重复的元素
|– listIterator() 返回List集合的特有迭代器ListIterator
|– 迭代的过程中,修改集合中的元素- 迭代器
|– 取出集合中存储对象,取出的方式 - 通过集合对象的iterator方法,获取迭代器对象
- 循环调用迭代器对象的hasNext方法
取出元素,调用迭代器的 next方法
ArrayList
|– 有序的
|– 有下标的
|– 可以重复的
|– 底层是可变数组结构,每次增长50%,此类是线程不安全的,效率高重要的案例
- ArrayList存储自定义的Person对象,并迭代器取出,Person类中必须重写toString()方法,否则 打印的是地址值,因为打印对象p默认调用的是toString()方法.
- 迭代器
代码解释
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
- ArrayList存储自定义对象,并去掉重复的元素,用contains()方法,contains()方法底层用的是equals()方法,所以如果是自定义的类对象时,要写equals()方法.
“`
追溯源码
public boolean contains(Object o) {
return indexOf(o) >= 0;
}
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
“`