集合:例如 偶数、水仙花数、奇数,班集体 都属于集合
还有{“111”,“sss”,aaa"}也是集合
集合框架JCF(java collections framework) = 集合 + 统一标准(框架)
三种集合的类型: List Set Map
1) ordered lists
【List】 队列
java.util.ArrayList ☆
* Vector
java.util.LinkedList
【Queue】 链表
java.util.PriorityQueue
2) dictionaries/maps 文档的索引和内容、身份证号和身份信息
【Map 】 k-v格式(身份证号、身份信息)
key不可重复,value可重复
java.util.HashMap ☆
3) sets k(不能重复),无序 unordered
【Set 】
java.util.HashSet
创建示例:
List list = new ArrayList(); //☆
Queue queue = new LinkedList();
Map map = new HashMap<Integer, Integer> (); //☆
Set set = new HashSet<>();
常见操作:增删改查
一、List
ArrayList
LinkedList
二、Set
Set接口存储一组唯一,无序的对象。
HashSet允许集合元素值为null 操作数据的方法与List类似,Set接口不存在get()方法。 Iterator接口表示对集合进行迭代的迭代器,专门实现集合的遍历。
方法:
• hasNext():判断是否存在另一个可访问的元素
• next():返回要访问的下一个元素
案例:
// 通过迭代器依次输出集合中所有元素的信息
System.out.println("使用Iterator遍历,员工姓名分别是:");
Iterator it = set.iterator();
while (it.hasNext()) {
Employee emp = (Employee) it.next();
String name = emp.getName();
System.out.println(name);
}
三、Map
案例:
package demo1;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
/**
* HashMap
*
* @author tcf
*
*/
public class ShowMap {
public static void main(String[] args) {
HashMap<Integer, String> map1 = new HashMap<Integer, String> ();
// 数据的常用操作: 增、删、改、查
System.out.println("【增】使用put");
map1.put(5, "angle");
map1.put(2, "baby");
map1.put(6, "hahahah");
System.out.println(map1);
// 删
System.out.println("【删】remove-1: 使用key");
map1.remove("5");// 指定的key类型与map1的key类型不一致,删除不了
System.out.println(map1);
map1.remove(6);
System.out.println(map1);
System.out.println("【删】remove-2: 使用key+value");
System.out.println(map1.remove(2, "baby2"));// (2, baby)
System.out.println(map1);
// 改: replace只有找到key,才会更新value
System.out.println("【改】-1:使用put");
map1.put(2, "baby2");// 修改
System.out.println(map1);
System.out.println("【改】-2:使用replace");
map1.replace(5, "haah");
System.out.println(map1);
map1.replace(8, "ssssssssssss");
System.out.println(map1);
// 查
System.out.println("【查】-1:根据key查找");
System.out.println(map1.containsKey(5));
System.out.println(map1.containsKey(8));
System.out.println("【查】-2:根据value查找");
System.out.println(map1.containsValue("baby"));
System.out.println(map1.containsValue("baby2"));
System.out.println("【查】-3:使用get提取,迂回判断是否存在");
String value8 = map1.get(8);
if (value8 == null) {
System.out.println("key(8)在map1中不存在");
}
else {
System.out.println("8存在:"+ value8);
}
if (map1.get(5) == null) {
System.out.println("key(5)在map1中不存在");
}
else {
System.out.println("5存在");
}
// 【遍历】
//key
Set<Integer> keySet = map1.keySet();
System.out.println(keySet);
Iterator<Integer> iterator = keySet.iterator();
while (iterator.hasNext()) {
System.out.println("===" + iterator.next());
//?2: 此处可以通过key获取到value,使用get(key)
}
// for (int i = 0; i < keySet.size(); i++) {
// System.out.println(keySet.);
// }
//value
Collection<String> values = map1.values();
Object[] array = values.toArray();
for (int i = 0; i < array.length; i++) {
System.out.println("?????" + array[i].toString());
}
// Entry: (key,value)
Set<Entry<Integer, String>> entrySet = map1.entrySet();
System.out.println(entrySet);
Iterator<Entry<Integer, String>> iterator2 = entrySet.iterator();
while (iterator2.hasNext()) {
Entry<Integer, String> one = iterator2.next();
System.out.println("(" + one + ")");
// 提取key、value => key value
System.out.println("\t" + one.getKey() +" " + one.getValue());
}
}
}
Collections
Collections是java.util下的类,包含有各种关集合操作静态方法。