集合相关习题
习题
- 如何遍历Map的key集,value集,key-value集,使用上泛型
// 如何遍历Map的key集,value集,key-value集,使用上泛型
public void test() {
HashMap<String, Integer> map = new HashMap<>();
map.put("AA", 123);
map.put("BB", 456);
// 遍历key集
Set<String> keySet = map.keySet();
for (String key : keySet) {
System.out.println(key);
}
// 遍历value集
Collection<Integer> values = map.values();
Iterator<Integer> iterator = values.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
// 遍历key-value集
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
Iterator<Map.Entry<String, Integer>> entryIterator = entrySet.iterator();
while (entryIterator.hasNext()) {
Map.Entry<String, Integer> entry = entryIterator.next();
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + " ---> " + value);
}
}
输出:
AA
BB
123
456
AA ---> 123
BB ---> 456
- 使用Iterator和增强for循环遍历List的代码,使用上泛型
// 练习:使用Iterator和增强for循环遍历List<String>的代码,使用上泛型
public void test() {
// 错误写法:List是接口,不能实例化
// List<String> list = new List<String>();
// 正确写法1:不限制size
List<String> list1 = new ArrayList<>();
list1.add("AAA");
list1.add("BBB");
list1.add("CCC");
// 正确写法2:限制size,不能再.add("AAA")
List<String> list2 = Arrays.asList("AA", "BB", "CC");
// list1.add("aa");
// 正确写法3:不限制size,能再.add("AAA")
List<String> list3 = new ArrayList<>(Arrays.asList("AA", "BB", "CC"));
list3.add("AAA");
// 使用Iterator遍历list2
Iterator<String> iterator = list2.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
System.out.println(next);
}
System.out.println("-----");
// 使用增强for循环遍历list3
for (String string : list3) {
System.out.println(string);
}
}
输出:
AA
BB
CC
-----
AA
BB
CC
AAA
- 提供一个方法,用于遍历获取HashMap<String, String>中所有value,并存放在List中返回。考虑上集合中泛型的使用。
// 练习:提供一个方法用于遍历获取HashMap<String, String>中所有value,并存放在List中返回。考虑上集合中泛型的使用。
public ArrayList<String> test() {
// 创建hashMap,并添加元素
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("AAA", "aaa");
// 错误写法:因为Collection转到List是不允许的
// Collection<String> values = map.values();
// return (ArrayList<String>) values;
// 正确写法:将values一个个添加进list中
Collection<String> values = hashMap.values();
ArrayList<String> arrayList = new ArrayList<>();
for (String s : values) {
arrayList.add(s);
}
return arrayList;
}
输出:
aaa
- 创建一个与a.txt同目录下的另外一个文件b.txt
File file1 = new File("d:\\a\\a.txt");
File file2 = new File(file1.getParent(),"b.txt");
- Map接口中的常用方法有哪些?
增:put(K k,V v)
删:V remove(K k)
改:put(K k,V v)
查:V get(K k)
长度:int size()
遍历:keySet()、values()、entrySet()