List接口和Set接口继承自Collection接口,可以使用Collection接口中常用的方法,如
add(Object e) // 添加指定对象至当前集合
remove(Object o) // 将指定对象从当前集合移除
isEmpty() // 返回布尔值,判断当前集合是否为null
iterator() // 返回用于遍历集合内元素的迭代器
size() //返回int值,获取当前集合中元素的个数
1.List集合
List接口不能直接被实例化,需要用到List接口的实现类,常用的是ArrayList类与LinkList类
List集合新增的方法
get(int index) //获得指定索引位置上的元素
set(int index,Object obj) //将集合中指定索引位置的对象修改为指定的对象
(1)fo循环
List<String>list=new ArrayList<>(); //创建上转型对象list
/*执行添加语句*/
list.add("a"); //add()方法
list.add("b");
list.add("c");
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
(2)foreach循环
for (String string : list) {
System.out.println(string);
}
(3)Iterator迭代器
Iterator<String> it=list.iterator(); //创建迭代器
while(it.hasNext()) { //如果仍有元素可以迭代,hashNext()返回true
System.out.println(it.next().toString()); //next返回迭代的下一个元素
}
2.Set集合
【1】Set接口不能直接被实例化,需要用到Set接口的实现类,常用的是HashSett类与TreeSet类
【2】Set集合没有提供get方法,无法通过索引获取元素,所以对Set集合的遍历只能通过加强for循环和迭代器进行遍历
(1)foreach循环
for (String string : set) {
System.out.println(string);
}
(2)Iterator迭代器
Iterator<String> it=set.iterator(); //创建迭代器
while(it.hasNext()) { //如果仍有元素可以迭代,hashNext()返回true
System.out.println(it.next().toString()); //next返回迭代的下一个元素
}
3.Map集合
Map接口不继承Collection接口,但提供了key到value的映射关系
Map接口中不能包含相同的key,且每个key只能映射一个value
常用方法
put(K key, V value) //将键(key)/值(value)映射存放到Map集合中
get(Object key) //返回指定键所映射的值,没有该key对应的值则返回 null
size() // 返回Map集合中数据数量
clear() // 清空Map集合
isEmpty () //判断Map集合中是否有数据,如果没有则返回true,否则返回false
remove(Object key) //删除Map集合中键为key的数据并返回其所对应value值。
values() // 返回Map集合中所有value组成的以Collection数据类型格式数据。
containsKey(Object key) // 判断集合中是否包含指定键,包含返回 true,否则返回false
containsValue(Object value) //判断集合中是否包含指定值,包含返回 true,否则返回false
keySet() // 返回Map集合中所有key组成的Set集合
entrySet() //将Map集合每个key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合
(1)foreach循环 【1】 分别使用keySet() ,values()方法创建key和value集合,并输出结果
Map<String,String>map=new HashMap<>(); //创建上转型对象map
/*执行添加语句*/
map.put("keyAA","valueAA");
map.put("keyAC","valueAA");
map.put("keyAB","valueAA");
Set<String>set=map.keySet(); //构建Map集合中所有的key的set集合
Collection<String>col=map.values(); //构建集合中所有的value值的集合
System.out.println("key值");
for (String str : set) { //foreach输出set集合中的key值
System.out.println(str);
}
System.out.println("~~~~~~~");
System.out.println("value值"); //foreach输出col集合中的value值
for (String string : col) {
System.out.println(string);
}
结果为
key值
keyAC
keyAB
keyAA
~~~~~~~
value值
valueAA
valueAA
valueAA
【2】使用get(Object key)方法返回key对应的value值
Set<String>set=map.keySet(); //构建Map集合中所有的key的set集合
for (String str : set) { //foreach输出set集合中的key值,Map接口创建的对象map调用get()方法得到key对应value值
System.out.println("key="+str+",value="+map.get(str));
}
结果如下
key=keyAC,value=valueAA
key=keyAB,value=valueAA
key=keyAA,value=valueAA
(2)迭代器下 分别使用keySet() ,values()方法创建key和value集合,使用get(Object key)方法,并遍历
错误代码!!!
Iterator<String> it=set.iterator(); //foreach输出set集合中的key值
while(it.hasNext()) {
System.out.println("key="+it.next().toString()+",value="+map.get(it.next().toString()));
}
//it.next()每次循环发生两次执行,会出现访问越界,元素未能找到的异常
java.util.NoSuchElementException
//正确代码如下,values() ,get(Object key) 二取一即可
Set<String>set=map.keySet(); //构建Map集合中所有的key的set集合
Collection<String>col=map.values(); //构建集合中所有的value值的集合
System.out.println("key值");
Iterator<String> it=set.iterator(); //foreach输出set集合中的key值
while(it.hasNext()) {
String key=it.next().toString();
System.out.println("key="+key+",value="+map.get(key));
}
System.out.println("~~~~~~~");
System.out.println("value值"); //foreach输出col集合中的value值
for (String string : col) {
System.out.println(string);
entrySet() 方法 //将Map集合每个key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合
(3)entrySet() 方法 下的迭代器
Map<String,String>map=new HashMap<>(); //创建上转型对象map
/*执行添加语句*/
map.put("keyCC","valueAA");
map.put("keyCS","valueAA");
map.put("keyCF","valueAA");
Set<Entry<String,String>>set=map.entrySet(); //构建Map集合中所有的key-value的set集合,数据类型为泛型Entry<String,String>
Iterator<Entry<String,String>>it=set.iterator();
while(it.hasNext()) {
Entry<String,String>entry=it.next(); //创建entry对象赋值it.next(),避免下方代码访问越界
System.out.println("key="+entry.getKey()+",value="+entry.getValue());
}
(4)entrySet() 方法 下的foreach循环
Set<Entry<String,String>>set=map.entrySet(); //构建Map集合中所有的key-value的set集合,数据类型为泛型Entry<String,String>
for (Entry<String, String> entry : set) {
System.out.println(entry);
}
结果
keyCF=valueAA
keyCC=valueAA
keyCS=valueAA