- 集合: 是一种容器
- 数组: 长度固定 可以放任意类型的数据 有下标
- 集合: 长度不固定 可以放任意类型的对象, 有的有下标,有的没有
- 有序:展示的顺序和加入的顺序一致
集合的继承关系;
Collection接口的实现类ArrayList的常用方法:
package demo2;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import org.omg.CORBA.SystemException;
public class TestCollection {
public static void main(String[] args) {
Collection collection = new ArrayList();
collection.add("abc");
collection.add(4);//将4包装成了Integer对象
collection.add(1);
Collection collection2 = new ArrayList();
collection2.add(2);
collection2.add(56);
//将collection加到了collection2中
collection2.addAll(collection);
//删
// System.out.println(collection.remove("abc"));
System.out.println(collection);
//不止会清楚collection中所有元素,还会删除collection2中
//和collection相同的的元素
collection2.removeAll(collection);
//清除所有
// collection.clear();
//打印集合长度,集合长度指集合中长度的个数
System.out.println(collection.size());
//isEmpty 判断集合是否为空,没有数据则返回true
System.out.println(collection.isEmpty());
collection.add(4);
//判断集合中是否包含指定的参数
System.out.println(collection.contains(4));
//判断是否完全包含
System.out.println(collection.contains(collection2));
//toArray()
Object[] objects = collection2.toArray();
for (Object object : objects) {
System.out.println(object);
}
//2增强for循环
for(Object object : collection2)
{
collection2.remove(object);
System.out.println(object);
}
//迭代器 hasNext() 判断是否有下个元素,next()获取下一个元素并将指针移向下一个
Iterator iterator = collection.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
iterator.remove();//删除元素
}
}
}
ArrayList的四种输出方法
注意:
在增强for循环中如果修改集合会抛出并发修改异常,有原因是在遍历的时候给集合创建了一个副本遍历的是副本,在遍历副本的过程中改变原来集合的结构所以会出错
但是在迭代器中,迭代器iteratir有自带的remove(),它会删除副本中的元素所以不会抛异常
package TsetArrayList;
/*
* 缺点:新增和删除与元素的时候需要移动大量的元素,效率较低
* 优点:查找和修改的时候根据下标遍历 效率高
*
*/
import java.util.ArrayList;
import java.util.Iterator;
public class Test1 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("abc");
list.add("def");
ArrayList list2 = new ArrayList<>();
list.addAll(4,list);
list2.add("二狗");
list2.add("小香菇");
list.add("康帅傅");
//填充 int 类型的数 认为是下标
list.remove(4);//元素有4 下标有4 它会删下标为4的
list.isEmpty();
//list.clear();
//输出下标位置
System.out.println(list.indexOf("def"));
//list 遍历方式
Object[] objects = list.toArray();
//增强for循环
for (Object object : list2) {
System.out.println(object);
}
//迭代器
Iterator iterator = list.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
//循环get方法
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i));
}
}
}