1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap
(1)其中LinkedHashMap是有序的 怎么存怎么取出来
我们讲一下Map的增删改查功能:
/* * Map集合的添加 */ Map<String, String> map = new HashMap<String, String>(); map.put("星期一", "Monday"); map.put("星期六", "Sunday"); System.out.println(map); /* * 通过建 获取值 */ String string = map.get("星期六"); System.out.println(string); /* * 通过建 修改值 */ map.put("星期一", "Mon"); System.out.println(map); /* * 通过建 删除值 */ String remove = map.remove("星期六"); System.out.println(remove); System.out.println(map); }
以上就是Map的增删改查方法
2.Map的遍历
1.第一种:通过keySet()方法获取集合的所有建 存储在Set<>集合中
(1)增强for
(2)迭代器
Map<String, Character> map =new LinkedHashMap<String, Character>();
map.put("一", '1');
map.put("二", '2');
map.put("三", '3');
map.put("四", '4');
map.put("五", '5');
Set<String> set = map.keySet();
(1)增强for
for (String string : set) {
System.out.println(string+" "+map.get(string));
}
(2)迭代器
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
String str=iterator.next();
Integer integer = map.get(str);
System.out.println(str+" "+integer);
}
第二种 通过 Map.Entry<K,V> 在Map类设计时,提供了一个嵌套接口:Entry。 Entry将键值对的对应关系封装成了对象。
getKey()方法:获取Entry对象中的键
getValue()方法:获取Entry对象中的值
entrySet()方法:用于返回Map集合中所有的键值对(Entry)对象,以Set集合形式返回。
(1)增强for
Set<Entry<String, Character>> entries = map.entrySet();
for (Entry<String, Character> entry : entries) {
String str = entry.getKey();
Character character = entry.getValue();
System.out.println(str+" "+character);
}
(2)迭代器
Set<Map.Entry<String, String>> entries = map.entrySet();
Iterator<Map.Entry<String, String>> iterator = entries.iterator();
while(iterator.hasNext()){
Entry<String, String> entry = iterator.next();
System.out.println(entry.getKey()+" "+entry.getValue());
}
3.Map之嵌套
我们在嵌套Map中传入引用类型Person 这里记得要重写equlas与HashCode方法
private static void fun6() { Map<Person, String> map1 = new LinkedHashMap<Person, String>(); map1.put(new Person("黄晓明", 40), "北京"); map1.put(new Person("AnlayBay", 36), "北京"); Map<Person, String> map2 = new LinkedHashMap<>(); map2.put(new Person("宋江",40), "梁山"); map2.put(new Person("林冲",40), "豹子头"); Map<Map<Person,String>, String> map = new LinkedHashMap<>(); map.put(map1, "第一组"); map.put(map2, "第二组"); for (Entry<Map<Person,String>, String> zhu: map.entrySet()) { String value = zhu.getValue(); for (Entry<Person, String> entry : zhu.getKey().entrySet()) { Person key = entry.getKey(); String value2 = entry.getValue(); System.out.println(value+".."+key+".."+value2); } } } /** * 迭代器遍历 */ private static void fun5() { Map<Person, String> map1 = new LinkedHashMap<Person, String>(); map1.put(new Person("黄晓明", 40), "北京"); map1.put(new Person("AnlayBay", 36), "北京"); Map<Person, String> map2 = new LinkedHashMap<>(); map2.put(new Person("宋江",40), "梁山"); map2.put(new Person("林冲",40), "豹子头"); Map<Map<Person,String>, String> map = new LinkedHashMap<>(); map.put(map1, "第一组"); map.put(map2, "第二组"); Set<Map<Person,String>> set = map.keySet(); Iterator<Map<Person, String>> iterator = set.iterator(); while(iterator.hasNext()){ Map<Person, String> next = iterator.next(); String string = map.get(next); Set<Person> persons = next.keySet(); Iterator<Person> iterator2 = persons.iterator(); while(iterator2.hasNext()){ Person next2 = iterator2.next(); String string2 = next.get(next2); System.out.println(string2+" "+next2+" "+string); } } }
这里我补充一个集合的工具类
Collections
public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("a"); arrayList.add("s"); arrayList.add("g"); arrayList.add("d"); //排序 Collections.sort(arrayList); System.out.println(arrayList); //翻转 Collections.reverse(arrayList); System.out.println(arrayList); //打乱顺序 Collections.shuffle(arrayList); System.out.println(arrayList); //二分查找 List<Integer> integers = new ArrayList<>(); Collections.addAll(integers, 1,2,3,4,5,7,8); System.out.println(integers); int binarySearch = Collections.binarySearch(integers, 6); System.out.println(binarySearch); //打乱shuffle Collections.shuffle(integers); System.out.println(integers); }
今天大部分用代码展示了,不多做介绍,集合这一模块 无非就是增删改查 还有遍历,我在学习的过程中 基本每一个集合的方法我都会敲十遍加深印象