Collection
java标准库自带的 java.util 提供了集合类:** Collection** ,他是除 Map 外的其他集合类的根接口。java.util 包下主要提供了以三种集合类型:
List :一种有序列表的集合,例如,按索引排列的Student的List;
Set :一种保证没有重复元素的集合,例如,所有无重复名称的Student的Set;
Map :一种通过键值(key-value)查找的映射表集合,例如,根据Student的name查找对应Student的Map。
List
在集合类中,List是最基础的一种集合:它是一种有序列表.
在使用List接口时,可以使用常用的几个方法:
在末尾添加一个元素:boolen add(E e)
在指定索引添加一个元素:boolen add(int index,E e)
删除指定索引的元素:int remove(int index)
删除某个元素:int remove(Object e)
获取指定索引的元素:E get(int index)
获取链表大小(包含元素的个数):int size()
判断List是否包含某个指定元素:boolean contains(Object o)
返回某个元素的索引,如果元素不存在,就返回-1 :int indexOf(Object o)
List特点
List接口允许我们添加重复元素
List还允许添加null
List的遍历
我们一般使用迭代器 Iterator
public class MyList {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
Iterator iterator = list.iterator();
while (iterator.hasNext()){
String s = iterator.next();
System.out.println(s);
}
}
}
Map
public class Main {
public static void main(String[] args) {
Student s = new Student("Xiao Ming", 99);
Map map = new HashMap<>();
map.put("Xiao Ming", s); // 将"Xiao Ming"和Student实例映射并关联
Student target = map.get("Xiao Ming"); // 通过key查找并返回映射的Student实例
System.out.println(target == s); // true,同一个实例
System.out.println(target.score); // 99
Student another = map.get("Bob"); // 通过另一个key查找
System.out.println(another); // 未找到返回null
}
}
class Student {
public String name;
public int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
}
通过上述代码可知:Map是一种键-值映射表,当我们调用put(K key, V value)方法时,就把key和value做了映射并放入Map。当我们调用V get(K key)时,就可以通过key获取到对应的value。如果key不存在,则返回null。和List类似,Map也是一个接口,最常用的实现类是HashMap。
遍历Map
对Map来说,要遍历key可以使用for each循环遍历Map实例的keySet()方法返回的Set集合,它包含不重复的key的集合
public class Main {
public static void main(String[] args) {
Map map = new HashMap<>();
map.put("apple", 123);
map.put("pear", 456);
map.put("banana", 789);
for (String key : map.keySet()) {
Integer value = map.get(key);
System.out.println(key + " = " + value);
}
}
}
Set
我们知道,Map用于存储key-value的映射,对于充当key的对象,是不能重复的,并且,不但需要正确覆写equals()方法,还要正确覆写hashCode()方法。
如果我们只需要存储不重复的key,并不需要存储映射的value,那么就可以使用Set。
Set用于存储不重复的元素集合,它主要提供以下几个方法:
将元素添加进Set:boolean add(E e)
将元素从Set删除:boolean remove(Object e)
判断是否包含元素:boolean contains(Object e)