目录
1、集合类简介
java.util包【Java API文档】中提供了一些集合类,集合用来存放对象引用:
集合类有:
- List集合
- Set集合
- Map集合
其中List与Set继承了Collection接口。
2、Collection接口(Java API文档)
Collection中常用的方法:
1、boolean add(E e)
添加元素到Collection集合中
2、boolean isEmpty()
检查Collection集合是否包含有元素,如果没有包含元素,则返回true,否则返回false。
此方法与contains方法的区别是,此方法是判断集合是否包含有元素,就是说,如果一个元素都没有的话就返回true,如果有一个或者以上就返回false。
contains的方法是判断集合中是否包含特定的元素,如果包含特定的元素就返回true,如果没有包含特定元素就返回false。
3、Iterator<E> iterator()
返回在此collection集合的元素上进行迭代的迭代器
4、boolean remove(Object o)
从collection集合中删除指定的元素,如果集合中有这个元素,并且删除成功,那么就返回true,否则返回false。
5、int size()
返回集合中元素个数
add()和Iterator()函数:
例:遍历集合,通过迭代器(Iterator)来实现。
import java.util.*;
public class Test {
public static void main(String[] args){
Collection<String>list=new ArrayList<>();//实例化集合类对象
list.add("f");
list.add("a");
list.add("n");
//法1:遍历集合
for(String s:list){
System.out.println(s);
}
//法二:创建迭代器,进行遍历
Iterator<String>it=list.iterator();//创建迭代器
while(it.hasNext()){//判断是否有下一个元素
String str=(String)it.next();//next()方法的返回值是Object
System.out.println(str);
}
}
}
结果显示:
3、List接口
List集合包括List接口以及List接口的所有实现类,List集合中的元素允许重复,各元素的顺序就是对象插入的顺序。
List接口继承了Collection中的所有方法,List下还有其它方法:
get(int index):获得指定索引位置元素;
set(int index,Object obj):将集合中指定索引位置的对象修改为指定的对象;
4、List接口实现类
(1)ArrayList类
实现了可变数组,允许保存所有元素,包括null,可以根据索引位置对集合进行快速的随机访问;
缺点:向指定索引位置插入对象或删除对象的速度较慢;
(2)LinkedList类
采用链表结构保存对象,使用LinkedList类实现List集合效率较高,但对于随机访问集合中的对象,使用LinkedList类实现List集合的效率较低。
使用List集合时通常声明为List类型,可通过不同的实现类来实例化集合:
List<E>list=new ArrayList<>();
List<E>list2=new LinkedList<>();
E:Java中合法的数据类型;
5、例子
在项目中创建Test类,在主方法中创建集合对象。
import java.util.*;
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();//创建集合对象
list.add("f");
list.add("a");
list.add("n");
int i = (int) (Math.random() * list.size());
System.out.println("随机数组中的元素:" + list.get(i));
list.remove(2);
System.out.println("将索引为2的元素从数组中移除,数组中的元素是:");
for(String s:list){
System.out.println(s);
}
}
}
6、Set集合
Set集合中的对象不按特定的方式排序,只是简单的把对象加入集合中,但Set中不能包含重复对象。
Set接口中常用的实现类有HashSet和TreeSet类。
HashSet类:
实现Set接口,由哈希表支持,它不保证Set迭代顺序,特别是它不保证该顺序恒久不变,此类允许使用null元素。
import java.util.*;
public class Test {
public static void main(String[] args) {
HashSet<String >tree=new HashSet<>();
tree.add("dlh");
tree.add("fjf");
tree.add("cwk");
for(String c:tree){
System.out.println(c);
}
}
}
TreeSet类:
实现Set接口,还实现java.util.SortedSet接口,TreeSet类实现了Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序。
import java.util.*;
public class Test {
public static void main(String[] args) {
TreeSet<String >tree=new TreeSet<>();
tree.add("fjf");
tree.add("cwk");
tree.add("dlh");
for(String c:tree){
System.out.println(c);
}
}
}
TreeSet类增加的新方法:
first():返回Set集合中第一个元素
last():返回Set集合中最后一个元素
comparator():返回此Set中的元素进行排序的比较器。
headSet(E toElement):返回此Set中的toElement之前的所有对象。
subSet(E fromElement,E toElement):返回包含fromElement 到 toElement(不包含)之间的对象。
tailSet(E fromElement):返回包含fromElement 之后的所有对象。
7、Map接口
Map接口中常用的一些方法:
Map接口中定义的一些常用方法:
* public V put (K key,V value):把键与值添加到Map集合中
* public V remove (Object key):删除key对应的值
* public V get(Object key):根据指定的键,获取对应的值
* public V containKey(Object key):判断是否包含指定的键
* public V Set<K> keySet:获取Map集合中所有的Key,存储到set集合中
* public V set<Map.entry<K,v>> entrySet:当Map类集合创建的时候,会生成一个Entry对象
* Map.entry<K,v>是一个接口
* 他是用来存储key和value的,每一组一个对象。这个方法可以把这些所有的Entry对象放到Set集合中。
* Entry对象中有getKey()和getValue()两种方法可以提取出key和value的值*/
例:HashMap类实现的Map集合:
import java.util.*;
public class Test {
public static void main(String[] args) {
Map<String ,String>map=new HashMap<>();//创建Map实例
map.put("29","范同学"); //向集合中添加对象
map.put("22","邓同学");
map.put("10","陈同学");
Set<String>set=map.keySet();//构建Map集合中所有key对象的集合
for(String c:set){ //遍历集合
System.out.println(c);
}
Collection<String>coll=map.values();//构建Map集合所有values对象集合
for(String c:coll){
System.out.println(c);
}
}
}
8、Map接口实现类
HashMap类实现的Map集合添加和删除映射关系效率高。此类不保证映射顺序。允许使用null值和null键。
TreeMap映射关系存在一定的顺序。不允许使用键对象null。
TreeMap类实现:
import java.util.*;
public class Test {
public static void main(String[] args) {
Map<String ,String>map=new TreeMap<>();//创建Map实例
map.put("29","范同学"); //向集合中添加对象
map.put("22","邓同学");
map.put("10","陈同学");
Set<String>set=map.keySet();//构建Map集合中所有key对象的集合
for(String c:set){ //遍历集合
System.out.println(c);
}
Collection<String>coll=map.values();//构建Map集合所有values对象集合
for(String c:coll){
System.out.println(c);
}
}
}