数组特性:
1. 只能存储同一种类型的元素(除开object类型的数组)。
2. 数组一旦初始化长度就固定了。
3. 数组中元素与元素之间的内存地址是连续的。
需求:使用一个容器收集家人的兴趣爱好
使用数组
String[] arr = new String[??] 长度给多少都不合适
集合:存储任意对象数据的容器。
集合特点:
1. 集合可以存储任意类型的对象数据。
2. 集合长度是会发生变化的。
集合体系:
---------| Collection 单列集合类的根接口
----------------| Set 如果实现了Set接口的集合类,该集合类具备特点:无序、元素不可重复
----------------| List 如果实现了List接口的集合类,该集合类具备的特点:有序、元素可重复
Collection主要方法:
增加
boolean add(E e)
boolean addAll(Collection c) 把一个集合的元素添加到另一个集合内
删除
void clear() 清空集合的所有元素
boolean remove(Object o) 删除指定的元素
boolean removeAll(Collection c) 删除两个集合中的交集元素
boolean retainAll(Collection<?> c) 删除两个集合的其他元素,交集元素不删除
判断
boolean contains(Object o) 判断是否包含某个指定元素
boolean containsAll(Collection<?> c) 集合是否包含参数集合中的所有元素
迭代
Iterator<E> iterator()获取集合中的迭代器,迭代器的作用就是用于抓取集合中的元素
Object[] toArray()
查看
int size() 返回集合中的元素个数
boolean isEmpty() 如果包含元素返回false 不包含元素返回true
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
class Person{
int id;
String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public String toString(){
return "{ID:"+this.id+" name:"+this.name+"}";
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Person){
Person p = (Person)obj;
return p.id ==this.id;
}else{
return false;
}
}
@Override
public int hashCode() {
return this.id;
}
}
public class Demo1 {
public static void main(String args[]){
// 创建一个集合对象
Collection c = new ArrayList();
int[] itme = {1,2,3};
c.add("第一个元素");
c.add(12);
c.add(12.45);
System.out.println("添加结果:"+c.add("马丹"));
c.add(itme);
// 创建集合的对象
Collection c2 = new ArrayList();
c2.add("郭富城");
c2.add("刘德华");
c2.add("张学友");
c2.add("那谁");
c2.add("马丹");
c.addAll(c2);
System.out.println(c.toString());
System.out.println("删除指定元素结果:"+c.remove("第一个元素"));
System.out.println(c);
System.out.println("删除交集元素结果:"+c.removeAll(c2));
System.out.println(c);
System.out.println("删除并集元素结果:"+c.retainAll(c2));
System.out.println(c);
c.clear();
System.out.println(c);
Collection c1 = new ArrayList();
// c.add(new Person(110,"张三"));
c1.add(new Person(112,"李四"));
c1.add(new Person(119,"王五"));
System.out.println("集合的元素:" + c1);
System.out.println("是否包含王五"+c1.contains(new Person(119,"王五")));
Collection c3 = new ArrayList();
c3.add(new Person(110,"张三"));
c3.add(new Person(112,"李四"));
c3.add(new Person(119,"王五"));
System.out.println("集合的元素:" + c3);
System.out.println("是否包集合中的所有元素"+c.containsAll(c3));
Collection c4 = new ArrayList();
c4.add("孙悟空");
c4.add("猪八戒");
c4.add("沙僧");
c4.add("白龙马");
c4.add("唐僧");
/**
* 遍历方式一、使用toArray方式遍历
*
*/
Object[] items = c4.toArray();
for (int i=0;i< items.length;i++){
System.out.println(items[i]);
}
/**
* 遍历方式二、使用iterator方式遍历
* Iterator 是一个接口
* 迭代器常用方法
* hasNext()有无可遍历的元素
* next() 下一个元素(获取当前游标指向元素,再把游标向下移动一个单位)
* remove()
*/
Iterator it = c4.iterator();
// System.out.println("是否有元素可遍历:"+it.hasNext());
// System.out.println("元素:"+it.next());
while(it.hasNext()){
System.out.println(it.next());
}
}
}
输出
添加结果:true
[第一个元素, 12, 12.45, 马丹, [I@2a84aee7, 郭富城, 刘德华, 张学友, 那谁, 马丹]
删除指定元素结果:true
[12, 12.45, 马丹, [I@2a84aee7, 郭富城, 刘德华, 张学友, 那谁, 马丹]
删除交集元素结果:true
[12, 12.45, [I@2a84aee7]
删除并集元素结果:true
[]
[]
集合的元素:[{ID:112 name:李四}, {ID:119 name:王五}]
是否包含王五true
集合的元素:[{ID:110 name:张三}, {ID:112 name:李四}, {ID:119 name:王五}]
是否包集合中的所有元素false
孙悟空
猪八戒
沙僧
白龙马
唐僧
孙悟空
猪八戒
沙僧
白龙马
唐僧
网友评论