引言
- 1.存储多个对象的容器有:数据组、集合
- 2.数组存对象的特点:Student[] stu=new Student[10];
数组弊端:一旦创建长度不可变为 此引入集合
集合特点:保存的都是引用类型变量(对象)不能保存基本数据类型,例如你存一个1不是int类型而是Integer
集合分为两大体系:Collection、Map
### Collection接口下有List Set子接口
* List接口(常用)特点:有序的,可重复
* Lsit实现类: ArrayList(主要实现类):底层数组实现,查询速度快
-
LinkedList:底层链表实现,增删改速度快 * Set接口特点:以map为底层实现,无序的,不可以重复 * Set实现类:HashSet ### Map接口:
底层是Hash函数,具有映射关系的集合,无序(不是随机)
重点无序(不是随机)位置由哈希值决定
@Test
public void test(){
Collection coll=new ArrayList();
//size获取集合长度 常用
System.out.println("集合长度:"+ coll.size());
//add(Object ):添加元素 常用(不指定泛型默认Object)
coll.add(123);//这个123在这里是Integer类型
coll.add("as");
coll.add(new Date());
//addAll(Collection c):将集合c中元素添加到本集合中
Collection c=Arrays.asList(1,6,9,78);
coll.add(c);
//isEmpty():判断当前集合是否为空 为空为true 不空为false 常用
System.out.println(coll.isEmpty());
//clear():清空集合中的元素
System.out.println(coll.size());
//contains(Object o) 判断当前集合中是否包含元素o
System.out.println(coll.contains(123));
//remove(Object o):删除元素o 成功返回true 失败返回false 常用
coll.remove(123);
//toArray():把集合转成数组 常用
Object[] o=coll.toArray();
for (Object object : o) {
System.out.println(object);
}
}
//遍历集合
@Test
public void test1(){
Collection coll=new ArrayList();
coll.add(123);//这个123在这里是Integer类型
coll.add("as");
coll.add(new Date());
//第一种方式
for(Object ob:coll){
System.out.println(ob);
}
System.out.println("====================");
//第二种方式:
//iterator():迭代器:返回的是一个Iterator接口
Iterator i=coll.iterator();
while(i.hasNext()){//hasNext()判断当前集合众是否下一个元素,如果有返回true 与next()成对出现
System.out.println(i.next());//获取完当前元素后会自动指向当前元素下一个元素
}
}
ArrayList主要方法以及遍历方式
/**
* List常用方法
* 增 删 修改 查询 size()
* void add(int index, Object ele):添加元素
* Object remove(int index):根据索引值删除指定元素
* Object set(int index, Object ele):设置指定元素的索引值为ele
* Object get(int index):根据索引值查询元素值
* int set():获取集合长度
*/
List list=new ArrayList();//下标从0开始
//添加元素
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
System.out.println(list);
//查询
System.out.println(list.get(1));
//删除
list.remove(1);
System.out.println(list);
//修改
list.set(0, 345);
System.out.println(list);
//for循环
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
//foreach
for(Object obj:list){
System.out.println(obj);
}
//迭代器iterator
Iterator i=list.iterator();
while(i.hasNext()){
System.out.println(i.next());
还有一些比较常用的
Arraylist 是List的主要是实现类
比较常用的方法:
void add(int index, Object ele):添加元素
boolean addAll(int index, Collection eles):根据指定索引值把元素添加到该位置
Object get(int index):根据索引值查询元素值
int indexOf(Object obj):返回集合元素中obj元素第一次出现的索引值 没有返回-1
int lastIndexOf(Object obj):返回集合元素中obj元素最后一次出现的索引值 没有返回-1
Object remove(int index):根据索引值删除指定元素
Object set(int index, Object ele):设置指定元素的索引值为ele
HashSet主要方法及其遍历方式
/**
* set:存储的元素是无序的,不可重复,主要的实现类HashSet()
* 1.无序:不是随机的指的是元素在底层存储的时候是无序
* 2.不可重复:在set添加相同元素时,后面的添加不进去,不是把前面的覆盖
* 当向set存元素的时候,首先调用该类的hashcode()方法,计算该对象的
* 哈希值,这个哈希值就代表这个对象的位置,如果该对象之前没有对象存储,那么就把该对象存储到该位置
* 如果此位置已经有了对象,调用equals方法,判断两个对象的是否相等,如果相等不等添加进来
*
*/
Set set=new HashSet();
set.add(123);
set.add("aaa");
set.add("bbb");
set.add("123");
set.add(new Student("李四"));
set.add(new Student("李四"));
set.add(new Student("张三"));
System.out.println(set);
//foreach
for(Object obj:set){
System.out.println(obj);
}
//迭代iterator
Iterator i=set.iterator();
while(i.hasNext()){
System.out.println(i.next());