集合类小结
一:集合的定义
在Java中,集合可以看成是一个容器。比如红色的衣服是一个集合,所有Java类的书也是一个集合。对于集合中的元素,我们可以很容易的取出来或者是按照一定的顺序放进去。Java中提供了不同的集合类,他们储存对象的方式各有不同,并且都提供了相应的方法供我们对集合里的元素进行操作。
二:集合类的分类
Collection接口是层次接口中的根接口,list和set继承了collection接口,各个接口还实现了不同的类。
1.Collection
方法:
add(E e) 将指定的的对象加到该元素
remove(Objcet 0) 移除指定对象
isEmpty() 判断当前集合是否为空,返回布尔值
size() 获取该集合中的元素,返回值为int型
iterator() 返回collnection上的进行迭代的迭代器,用于便利集合中的元素
package com.test;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class connection {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("刘备");
collection.add("关羽");
collection.add("张飞");
int n = collection.size();
System.out.println(n);
collection.add("赵云");
//collection.remove("刘备");
Iterator<String> it = collection.iterator();//创建迭代器
System.out.println(it.hasNext());//判断是否有下一个元素
while(it.hasNext()){
String str = it.next();//获取集合中的元素
System.out.println(str);
}
}
2.List集合
List集合包括List接口和List接口的所有实现类,List集合中的元素允许重复,各元素的顺序就是对象插入的顺序,类似于数组,可以通过索引访问集合中的元素。List接口继承了collection接口,因此包含了Collection的所有方法,此外还定义了两个重要的方法。
get(int index) 获得指定索引位置的元素
set(int index,Object object) 将指定位置的对象修改为指定对象
两个实现类ArrayList和LinkedList
package com.test;
import java.util.ArrayList;
import java.util.Iterator;
public class List {
public static void main(String[] args) {
//java.util.List<String> list = new LinkedList<>();
java.util.List<String> list = new ArrayList<>();
list.add("a");//向集合中添加元素
list.add("b");
list.add("c");
Iterator<String> it = list.iterator();//创建迭代器
while(it.hasNext()){
String str = it.next();
System.out.println(str);
}
}
}
ArrayList实现了可变数组,允许保存所有元素,包括null,可以根据索引位置对集合进行快速访问;缺点是根据索引的位置插入或者删除对象的速度较低。
LinkedList采用链表的形式保存对象。这种结构的优点是便于向集合中插入或者删除元素,但是对于随机访问元素效率却很低。
注意:数组和集合的元素都是从零开始。
2.Set集合
set集合的对象不按特点方式排序,只是简单的将对象放入集合中,但是Set集合中的元素不能重复,当重复添加相同的元素时,就会覆盖之前的元素。Set集合由Set接口和Set实现类组成,Set集合继承了collnection接口,所有包含了collnection接口的所有方法。
两个实现类HashSet和TreeSet
package com.test;
import java.lang.Character.Subset;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class SET{
public static void main(String[] args){
//HashSet<String> set = new HashSet<>()
TreeSet<String> set = new TreeSet<>();
set.add("a");
set.add("e");
set.add("b");
set.add("c");
set.add("c");
set.add("d");
set.headSet("c");
Iterator<String> it = set.iterator();
//it = set.subSet("a", "c").iterator();
while(it.hasNext()){
String set1 = it.next();
System.out.println(set1);
}
}
}
HashSet类实现了Set接口,他不保证元素的顺序。
TreeSet不仅实现了Set集合还实现了java.util.SortedSet接口,因此,TreeSet集合实现的Set类在遍历集合时按自然顺序递增,可以对对象进行排序。在此功能上,Tree还新增了一些方法。
TreeSet新增的方法
first() 返回此对象的第一个元素。
last() 返回此对象中的最后一个元素。
comparator 返回对此Set中的元素进行排序的比较器,如果此Set使用自然顺序,则返回null。
headSet(E toElement) 返回一个新的集合,新的集合时toElement之前的所有对象。
subSet(E fromElement,EfromElement) 返回一个新的集合,新的集合的对象时两个参数之间的对象。
tailElemen(E fromElement) 返回一个新的集合,新的集合是参数之后的所有的对象。
3.Map集合
Map集合没有继承Collnection接口,他是采用键值对存储数据,就好像是超市外面的自助存取柜子,一个人一个柜子,一个柜子一个一个对应的锁。Map不能包含相同的Key,一个Key对应一个value值。Map集合包括Map接口以及Map接口实现的所有实现类。
package com.test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class MAP {
public static void main(String[] args) {
//Map<String, String> map = new HashMap<String, String>();
TreeMap<String,String> map = new TreeMap<>();
map.put("1", "张三");
map.put("3", "张四");
map.put("2" ,"张五");
map.put("4", "张六");
map.put("5", "张七");
map.put("6", "张八");
map.put("7", "张八");
Set<String> set = map.keySet();//将Map集合的key值放在set集合中
Iterator<String> it = set.iterator();
while(it.hasNext()){
String id = it.next();//获取key
String name = map.get(id);//通过key值获取value
System.out.println(id+" "+name);
}
}
}
HashMap集合类在存储数据时没有顺序,但是他的添加和删除的映射关系效率更高,允许使用null键和null值,但是必须抱枕健的惟一性。
而TreeSet中的映射关系有一点的顺序,如果希望Map集合中的对象也存在一定的顺序,应该使用TreeMap类实现Map集合;不允许健对象是null