Set、 Map、 List
java.util包中提供了一些集合类,这些集合类又被称为容器,提到容器不难想到数组.
1.集合类与数组的不同之处:
- 数组的长度是固定的,集合的长度是可变的;
- 数组用来存放一些基本类型的数据,集合用来存放对象的引用

2.Collection接口的方法
add(E e) # 将指定的对象添加到该集合中
remove(Object o) #将指定的对象从当前集合中移出
isEmpty() #返回Boolean值,用于判断当前集合是否为空
iterator() #返回在此Collection的元素上进行迭代的迭代器,用于遍历集合中的对象
size() #返回int类型的值,获取该集合元素的个数
代码实现
public class Muster {
public static void main(String[] args) {
List<String> list = new ArrayList<>(); //实例化集合对象
list.add("a"); //向集合中添加数据
list.add("b");
list.add("c");
Iterator<String> iterator = list.iterator(); //创建迭代器
while (iterator.hasNext()){ //判断是否有下一个元素
String str = (String)iterator.next(); //获取集合中元素
// Iterator的next方法返回的是 Object。
System.out.println(str);
}
}
}
3.List集合(元素允许重复)
3.1 List接口
get(int index):获得指定索引位置的元素
set(int index,Object obj):将集合指定索引位置的对象修改为指定的对象
3.2List接口的实现类
* ArrayList类实现可变数组,可保存所有的元素,包括null,可根据索引进行快速访问
缺点:指定位置插入,删除元素慢,
* LinkedList类用链表结构保存对象,插入删除对象快,,随机访问慢
接口实现代码:
List<E> list = new ArrayList<>(); //E是java数据类型 Int 、String
List<E> list = new LinkedList<>()
注意:跟数组一样,集合的索引是从0开始
代码实现 (随机数用法)
public static void main(String[] args) {
List<String> list = new ArrayList<>();//创建集合对象
list.add("a");
list.add("b"); //向集合中添加元素
list.add("c");
int i = (int) (Math.random() * list.size()); //获取0~2之间的随机数
System.out.println(list.get(i));
list.remove(2); //移除索引为2的元素,采用remove方法
for (int j = 0;j<list.size(); j++) { //遍历集合元素
System.out.println(list.get(j));
}
}
4.set集合(不允许重复对象)
实现类:
- HashSet
- TreeSet
5.Map集合
Map集合没有继承Connection接口,其提供key,value的映射,key值唯一。
5.1Map接口
接口中常用方法:
put(K key ,V value) :向集合中添加指定的key 与 value的映射关系
containKey(Object key) :如果此映射包含指定key的映射关系,则返回true
containsValue(Object value) :如果此映射将一个或多个key映射到指定值,则返回true
get(Object key) :如果存在指定的key值,则返回对应的value,否则返回null
keyset():返回该对象中的所有key对象形成的Set集合
values():返回该对象中的所有值对象形成的Collection集合
5.2Map接口的实现类
-
HashMap(建议使用)
通过hash表对其内部映射关系进行快速查找,可以使用null值和null键,不保证映射的顺序。 -
TreeMap
实现map和java.util.SortedMap接口,集合中映射关系有一定顺序,不允许键对象是null,添加删除等时性能差于HashMap。
代码实现
public static void main(String[] args) {
Map<String, String> map = new HashMap<>(); //创建map实例
map.put("01","李四"); //向集合中添加元素
map.put("02", "王五");
System.out.println("key集合中的元素为:");
Set<String> set = map.keySet(); //构建map集合中所有key对象的集合
Iterator<String> iterator = set.iterator(); //创建集合迭代器
while (iterator.hasNext()){ //遍历,hasNext方法判断下一个元素是否存在
System.out.println(iterator.next()); //获取集合中的元素
}
System.out.println("values合中的元素为:");
Collection<String> values = map.values();
iterator = values.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
代码实现(HashMap和TreeMap)
public static void main(String[] args) {
Student student = new Student("张三", "84");
Student student1 = new Student("李四", "12");
Student student2 = new Student("王五", "41");
Student student3 = new Student("赵六", "23");
System.out.println("HashMap实现:");
HashMap<String, String> hashMap = new HashMap<>();//创建map实例
hashMap.put(student.getAge(),student.getName());//添加数据
hashMap.put(student1.getAge(),student1.getName());
hashMap.put(student2.getAge(),student2.getName());
hashMap.put(student3.getAge(),student3.getName());
Set<String> keySet = hashMap.keySet(); //获取map集合中的key集合对象
Iterator<String> iterator = keySet.iterator();
while (iterator.hasNext()) { //遍历map集合
String key = (String)iterator.next();
String value = hashMap.get(key);
System.out.println("age:"+key+"---" +"name:" + value);
}
System.out.println("TreeMap实现:");
TreeMap<String, String> treeMap = new TreeMap<>(); //创建TreeMap集合对象
treeMap.putAll(hashMap); //添加数据
Iterator<String> iterator1 = treeMap.keySet().iterator(); //创建迭代器
while (iterator1.hasNext()) { //遍历map集合
String str = iterator1.next(); //获取key
String name = treeMap.get(str); //获取value
System.out.println("age:" + str +"---"+ "name:"+name);
}
}

被折叠的 条评论
为什么被折叠?



