Set集合
特点:无序,排重
Set集合中的元素不按特定的方式排序,只是简单地把对象加入集合中,并且Set集合中不能包含重复对象。即set集合具有无序性与排重性。又因为其是没有索引的,所以无法利用普通的For循环进行遍历操作;
Set接口继承了Collection 接口,所以Collectiom接口中的方法可以在Set实例中被使用。
add(E e) 添加元素;
clear() 清空元素;
remove(E e) 移除元素;
size() 元素数量;
Set集合的实现类
HashSet实现类
特点:查询快,无序,排重
HashSet类由哈希表(实际上是一个HashMap实例)支持。HashSet集合在进行查询是速度较快,但是不能保证元素的迭代顺序,允许使用null元素。要求放入的对象必须实现HashCode()方法,放入的对象,是以Hashcode码作为标识的,而具有相同内容的String对象,Hashcode码是一样的,所以放入的内容不能重复。
TreeSet实现类
特点:有序,排重
TreeSet类不仅实现了Set接口,还实现了java.util.SortedSet接口 ,因此由TreeSet实现的Set集合支持两种排序方法,自然排序和定制排序。自然排序是按由小到大或字典顺序排序;定制排序呢,类需要实现Comparable接口,并重写CompareTo()方法、hashcode()方法与equals()方法
TreeSet实现类增加了如下方法
//Set集合的使用,以TreeSet为例
import java.util.*
public class TreeSetDemo { //创建TreeSet实现类
public static void main(String[] args) {
Set<Integer> set = new TreeSet<>(); //使用TreeSet类实现Set集合对象
set.add(43); //向Set集合中添加元素
set.add(2);
set.add(-34);
set.add(345);
set.add(3);
Iterator<Integer> iterator = set.iterator(); //新建迭代器
System.out.println("Set集合中的元素:"); //提示信息
while (iterator.hasNext()) { //遍历并输出Set集合中的元素
System.out.println(iterator.next());
}
}
}
Map集合
特点:元素是(key,value)键值对,排重, 无序
Map接口没有继承 Collection 接口
Map用于保存具有映射关系的两组数据:key和value,即键和值。它们都可以存储任何引用类型的数据,但键不能重复。所以通过指定的键就可以取出对应的值。 Map 的内容可以被当作一组 key集合,一组 value 集合,或者一组 key-value 映射。为了保证键唯一,必须重写hashCode方法和equals方法。
Map接口提供了一些特殊方法:
Map集合的实现类
HashMap实现类
特点:查询快,增删快,无序,键唯一,允许null键与null值
HashMap类通过哈希表对其内部的键值对的映射关系进行快速查找,但不保证映射的顺序。
TreeMap实现类
特点:查询快,增删慢,有序,键唯一,不允许null键
TreeMap类不仅实现了Map接口,还实现了java.util.sortedMap接口,因此TreeMap集合中的映射关系具有一定的顺序。
**建议:**使用 HashMap 类创建Map集合,因为由 HashMap 类实现的Map集合在添加、删除和定位映射关系是效率更高,当需要顺序输出时,再创建一个完成相同映射关系的treeMap类实例
//Map集合的使用,以HashMap为例
import java.util.*;
public class HashMapDemo {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>(); //创建Map集合对象
map.put("0731","长沙区号"); //向集合中添加元素、
map.put("0734","衡阳区号");
map.put("0735","郴州区号");
Iterator iterator; //创建迭代器
Set<String> set = map.keySet(); //获取map集合中所有key对象形成的Set集合
iterator = set.iterator();
System.out.println("key:");
while (iterator.hasNext()) { //遍历并输出Map集合中的key
System.out.println(iterator.next());
}
Collection<String> collection = map.values(); //获取map集合中所有value对象形成的collection集合
iterator = collection.iterator();
System.out.println("value:");
while (iterator.hasNext()) { //遍历并输出Map集合中的value
System.out.println(iterator.next());
}
}
}
/*
运行结果:
key:
0731
0734
0735
value:
长沙区号
衡阳区号
郴州区号
*/