集合的框架
集合的体系
Java 集合可分为 Collection 和 Map 两种体系
Collection接口:
- Set:元素无序、不可重复的集合 —类似高中的“集合”
- List:元素有序,可重复的集合 —”动态”数组
Map接口:具有映射关系“key-value对”的集合 —类似于高中的“函数” y = f(x) (x1,y1) (x2,y2)
Collection接口
解析:
1、这些接口都处于java.util包内
2、Collection 接口是 List、Set 和 Queue 接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。
3、JDK不提供此接口的任何直接实现,而是提供更具体的子接口(如:Set和List)实现。
4、在 Java5 之前,Java 集合会丢失容器中所有对象的数据类型,把所有对象都当成 Object 类型处理;从 Java5 增加了泛型以后,Java 集合可以记住容器中对象的数据类型
方法
代码实现:
@Test
public void testCollection() {
Collection collection=new ArrayList();
System.out.println(collection.size());//返回集合的个数
collection.add(123);//添加一个元素
collection.add("sasd");
collection.add(new Date(0));
collection.add("ss");
collection.add(new Person(1,"samuro"));
//判断contains(Object o):判断集合中是否包含指定的obj元素
//判断的依据是:根据元素所在类的equal是()方法进行判断
//明确:如果存入集合中的元素师自定义类的对象,要求重写equal是()方法
boolean b1=collection.contains(123);
System.out.println(b1);
System.out.println(collection);
//containsAll();判断是否包含所有元素
Collection collection1=new ArrayList();
collection1.add(123);//添加一个元素
collection1.add("sasd");
collection1.add(new Date(0));
collection1.add("ss");
collection1.add(new Person(1,"samuro"));
System.out.println(collection.containsAll(collection1));
//retainAll()球当前集合和一其它集合共有的元素,返回给当前集合
collection.retainAll(collection1);
System.out.println(collection);
//remove()删除元素,返回boolean
System.out.println(collection.remove(123));
//removeAll():删除共有的元素
collection1.removeAll(collection);
System.out.println(collection1);
//equals()判断两个集合中的元素是否完全相同
//hashCode():算哈希值
//toArray():将集合转成数组
Object o=collection1.toArray();
//iterator():返回一个Iterator接口实现的类的对象,进而实现集合的遍历,不用for循环
Iterator iterator=collection.iterator();
System.out.println(iterator.next());
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
Map接口
解析
1、Map与Collection并列存在。用于保存具有映射关系的数据:Key-Value
2、Map 中的 key 和 value 都可以是任何引用类型的数据
3、Map 中的 key 用Set来存放,不允许重复,即同一个 Map 对象所对应的类,须重写hashCode()和equals()方法。
4、常用String类作为Map的“键”。
5、key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到唯一的、确定的 value。
方法
1、添加、删除操作:
Object put(Object key,Object value)
Object remove(Object key)
void putAll(Map t)
void clear()
2、元视图操作的方法:
Set keySet()
Collection values()
Set entrySet()
3、元素查询的操作:
Object get(Object key)
boolean containsKey(Object key)
boolean containsValue(Object value)
int size()
boolean isEmpty()
boolean equals(Object obj)