这里写自定义目录标题

  • P27418_Collections集合工具类的方法_addAll&shuffle
  • P27519_Collections集合工具类的方法_sort(List)
  • P27701_Map集合概述
  • P27802_Map常用子类
  • P27903_Map接口中的常用方法
  • P28004_Map集合遍历键找值方式
  • P28105_Entry键值对对象
  • P28206_Map集合遍历键值对方式
  • P28307_HashMap存储自定义类型键值
  • P28408_LinkedHashMap集合
  • P28509_Hashtable集合
  • P28610_练习_计算一个字符串中每个字符出现次数_bilibili
    • collection和map集合的思维导图关系
  • P28711_JDK9对集合添加的优化_of方法

P27418_Collections集合工具类的方法_addAll&shuffle

package com.itheima.demo05.Collections;import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;/*java.util.Collections是集合工具类,用来对集合进行操作。部分方法如下:public static <T> boolean addAll(Collections<T> c,T ... elements):往集合中添加一些元素解决一次添加多个元素public static void shuffle(List<?> list)打乱顺序:打乱集合顺序*/
public class Demo01Collections {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();//往集合中添加多个元素/*list.add("a");list.add("b");list.add("c");list.add("d");*///        public static <T> boolean addAll(Collections<T> c,T ... elements):往集合中添加一些元素Collections.addAll(list,"ab","cf","123");//        public static void shuffle(List<?> list)打乱顺序:打乱集合顺序Collections.shuffle(list);System.out.println(list);}
}

P27519_Collections集合工具类的方法_sort(List)

package com.itheima.demo05.Collections;import java.util.ArrayList;
import java.util.Collections;/*- java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。注意:sort(List<T> list)使用前提被排序的集合里边存储的元素,必须实现Comparable接口,重写接口中的方法compareTo定义排序的规则Comparable接口的排序规则:自己(this)-参数:升序,反之。*/
public class Demo02Sort {public static void main(String[] args) {ArrayList<Integer> list01 = new ArrayList<>();list01.add(1);list01.add(3);list01.add(2);System.out.println(list01);//[1, 3, 2]//public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。Collections.sort(list01);//默认是升序System.out.println(list01);//[1, 2, 3]ArrayList<String> list02 = new ArrayList<>();list02.add("a");list02.add("c");list02.add("b");System.out.println(list02);//[a, c, b]Collections.sort(list02);System.out.println(list02);//[a, b, c]ArrayList<Person> list03 = new ArrayList<>();list03.add(new Person("张三",18));list03.add(new Person("李四",20));list03.add(new Person("王五",15));System.out.println(list03);//[Person{name='张三', age=18}, Person{name='李四', age=20}, Person{name='王五', age=15}]Collections.sort(list03);System.out.println(list03);}
}

P27701_Map集合概述



P27802_Map常用子类

P27903_Map接口中的常用方法


package com.itheima.demo01.Map;import java.util.HashMap;
import java.util.Map;/*java.util.Map<k,v>集合Map集合的特点:1.Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)2.Map集合中的元素,key和value的数据类型可以相同,也可以不同。3.Map集合中的元素,key不允许重复,value可以。4.Map集合中的元素,key和value一一对应。java.util.HashMap<k,v>集合 implements Map<k,v>接口HashMap集合的特点:1.HashMap集合底层是哈希表,查询速度特别快JDK1.8之前:数组+单向链表JDK1.8之后:数组+单向链表/红黑树(链表的长度超过8):提高查询的速度2.HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致。java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合LinkedHashMap的特点:1.LinkedHapMap集合底层是哈希表+链表(保证迭代的顺序)2.LinkedHapMap集合是一个有序的集合,存储元素和取出元素是一致。*/
public class Demo01Map {public static void main(String[] args) {//        show01();
//        show02();
//        show03();show04();}/*boolean containsKey(Object key):判断集合中是否包含指定的键。包含返回true,不包含返回false*/private static void show04() {//创建Map集合对象Map<String,Integer> map = new HashMap<>();map.put("赵丽颖",168);map.put("安吉拉大宝贝",165);map.put("黑泽志玲",178);boolean b1 = map.containsKey("赵丽颖");System.out.println("b1:"+b1);boolean b2 = map.containsKey("迪丽热巴");System.out.println("b2:"+b2);}//*public  V get(Object key):把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。返回值:vkey存在,v返回对于的value的值key不存在,v返回null*/private static void show03() {//创建Map集合对象Map<String,Integer> map = new HashMap<>();map.put("赵丽颖",168);map.put("安吉拉大宝贝",165);map.put("黑泽志玲",178);Integer v1 = map.get("安吉拉大宝贝");System.out.println("v1:"+v1);//v1:165Integer v2 = map.get("迪丽热巴");System.out.println("v2:"+v2);//v2:null}//*public V remove(Object key) :把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。返回值:vkey存在,v返回被删除的值key不存在,v返回null*/private static void show02() {//创建Map集合对象Map<String,Integer> map = new HashMap<>();map.put("赵丽颖",168);map.put("安吉拉大宝贝",165);map.put("黑泽志玲",178);System.out.println(map);//{安吉拉大宝贝=165, 黑泽志玲=178, 赵丽颖=168}Integer v1  = map.remove("黑泽志玲");System.out.println("v1:"+v1);System.out.println(map);//{安吉拉大宝贝=165, 赵丽颖=168}//        int v2  = map.remove("林志颖");////自动拆箱 NullPointerException空指针异常。Integer可以接受null,但是int不行。//所以平时多使用包装类,少使用基本类型Integer v2  = map.remove("林志颖");System.out.println("v2:"+v2);//v2:null}
//*public V put(K key, V value):将指定的键与指定的值添加到Map集合中。返回值:v存储键值对的时候,key不重复,返回值v是null存储键值对的时候,key  重复,会使用新的value替换中重复的value,返回被替换的value值*/private static void show01() {//创建Map集合对象,多态Map<String,String> map = new HashMap<>();String v1 = map.put("李晨", "范冰冰1");System.out.println("v1:"+v1);String v2 = map.put("李晨", "范冰冰2");System.out.println("v2:"+v2);System.out.println(map);//{李晨=范冰冰2},打印的不是地址,说明重写了toString方法map.put("老坛","胡搞瞎搞");map.put("你的吓王","无限猖狂");System.out.println(map);//{你的吓王=无限猖狂, 老坛=胡搞瞎搞, 李晨=范冰冰2}}
}

P28004_Map集合遍历键找值方式

keyset:将key键值对,用set集合存储。
set集合遍历:迭代器,增强for循环。

package com.itheima.demo01.Map;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;/*Map集合的第一种遍历方式:通过键找值的方式Map集合中的方法:Set<K> keySet() 返回此映射中包含的键的 Set 视图。实现步骤:1.使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中2.遍历set集合,获取Map集合中的每一个key3.通过Map集合中的方法get(key),通过key找到value*/
public class Demo02KeySet {public static void main(String[] args) {//创建Map集合对象Map<String,Integer> map = new HashMap<>();map.put("赵丽颖",168);map.put("杨颖",165);map.put("林志玲",178);//1.使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中Set<String> set = map.keySet();//2.遍历set集合,获取Map集合中的每一个key//使用迭代器遍历Set集合Iterator<String> it = set.iterator();while (it.hasNext()){String key = it.next();//3.通过Map集合中的方法get(key),通过key找到valueInteger value = map.get(key);System.out.println(key+"="+value);}System.out.println("-------------------");//使用增强for遍历Set集合for(String key : set){//3.通过Map集合中的方法get(key),通过key找到valueInteger value = map.get(key);System.out.println(key+"="+value);}System.out.println("-------------------");//使用增强for遍历Set集合for(String key : map.keySet()){//3.通过Map集合中的方法get(key),通过key找到valueInteger value = map.get(key);System.out.println(key+"="+value);}}
}

P28105_Entry键值对对象


P28206_Map集合遍历键值对方式

package com.itheima.demo01.Map;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;/*Map集合遍历的第二种方式:使用Entry对象遍历Map集合中的方法:Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set视图实现步骤:1.使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中2.遍历Set集合,获取每一个Entry对象3.使用Entry对象中的方法getKey()和getValue()获取键与值*/
public class Demo03EntrySet  {public static void main(String[] args) {//创建Map集合对象Map<String,Integer> map = new HashMap<>();map.put("赵丽颖",168);map.put("安吉拉大宝贝",165);map.put("黑泽志玲",178);//1.使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中Set<Map.Entry<String, Integer>> set = map.entrySet();//2.遍历Set集合,获取每一个Entry对象//迭代器遍历Set集合Iterator<Map.Entry<String, Integer>> it = set.iterator();while (it.hasNext()){Map.Entry<String, Integer> entry = it.next();//3.使用Entry对象中的方法getKey()和getValue()获取键与值String key = entry.getKey();Integer value = entry.getValue();System.out.println(key+"="+value);}System.out.println("===================");for (Map.Entry<String, Integer> entry:set){//3.使用Entry对象中的方法getKey()和getValue()获取键与值String key = entry.getKey();Integer value = entry.getValue();System.out.println(key+"="+value);}}
}

P28307_HashMap存储自定义类型键值

package demo01;import java.time.Period;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
//第二种方法必须是要重写,hashcode和equals方法。
//第一种方法,存储在set集合中已经保证了不重复了。
public class Test {public static void main(String[] args) {show01();
//        show02();}/*HashMap存储自定义键值key:Person类型Person类必须重写hashCode方法,可以保证key唯一value:String类型value可以重复(同名同年龄的人视为一个人)*/private static void show02() {//创建HashMap集合HashMap<Person,String> map = new HashMap<>();//往集合中添加元素map.put(new Person("女王",18),"英国");map.put(new Person("请始皇",20),"秦国");map.put(new Person("普京",18),"俄罗斯");map.put(new Person("女王",18),"脑力求死");//使用entrySet和增强for遍历Map集合Set<Map.Entry<Person, String>> set = map.entrySet();for (Map.Entry<Person,String> entry : set){Person key = entry.getKey();String value = entry.getValue();System.out.println(key+"-->"+value);}}//*HashMap存储自定义键值key:String类型String类重写hasCode方法和equals方法,可以保证key唯一value:Person类型value可以重复(同名同年龄的人视为一个人)*/private static void show01() {//创建HashMap集合HashMap<String,Person> map = new HashMap<>();//往集合中添加元素map.put("北京",new Person("张三",18));map.put("上海",new Person("李四",19));map.put("广州",new Person("王五",20));map.put("北京",new Person("赵六",18));//key值相同,value会覆盖旧的value值//使用keySet加增强for循环遍历Map集合Set<String> set = map.keySet();for (String key : set){Person value = map.get(key);System.out.println(key+"-->"+value);}System.out.println(map);//{上海=Person{name='李四', age=19}, 广州=Person{name='王五', age=20}, 北京=Person{name='赵六', age=18}}}
}
package demo01;import java.util.Objects;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return age == person.age &&Objects.equals(name, person.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

P28408_LinkedHashMap集合

package com.itheima.demo03.Map;import java.util.HashMap;
import java.util.LinkedHashMap;/*java.util.LinkedHahsMap<K,V> extends HashMap<K,V>Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。底层原理:哈希表+链表(记录元素的顺序)*/
public class Demo01LinkedHashMap {public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put("a","a");map.put("c","c");map.put("b","b");map.put("a","d");System.out.println(map);//key不允许重复,无序{a=d, b=b, c=c}LinkedHashMap<String,String> linked = new LinkedHashMap<>();linked.put("a","a");linked.put("c","c");linked.put("b","b");linked.put("a","d");System.out.println(linked);//key不允许重复,有序,存和取一样{a=d, c=c, b=b}}
}

P28509_Hashtable集合

package com.itheima.demo03.Map;import java.util.HashMap;
import java.util.Hashtable;/*java.util.Hashtable<K,V>集合 implements Map<K,V>接口Hashtable:底层也是一个哈希表,是一个线程安全的集合,是单线程集合,速度慢HashMap:底层也是一个哈希表,是一个线程不安全的集合,是多线程集合,速度块Hashtable集合:不可以存储null值,不null键HashMap集合(之前学的所有的集合):可以存储null值,null键Hashtable和Vector集合一样,在jdk1.2版本之后被更先进的集合(HashMap,ArrayList)取代了Hashtable的子类Properties依然活跃在历史的舞台Properties集合是唯一和IO流相结合的集合*/
public class Demo02Hashtable {public static void main(String[] args) {HashMap<String,String> map = new HashMap<>();map.put(null,"a");map.put("b",null);map.put(null,null);System.out.println(map);//{null=null, b=null}Hashtable<String,String> table = new Hashtable<>();
//        table.put(null,"a");//NullPointerException
//        table.put("b",null);//NullPointerExceptiontable.put(null,null);//NullPointerExceptionSystem.out.println(table);}
}

P28610_练习_计算一个字符串中每个字符出现次数_bilibili

collection和map集合的思维导图关系



package com.itheima.demo03.Map;import java.util.HashMap;
import java.util.Scanner;/*练习:计算一个字符串中每个字符出现次数分析:1.使用Scanner获取用户输入的字符串2.创建Map集合,key是字符串中的字符,value是字符的个数3.遍历字符串,获取每一个字符4.使用获取到的字符,去Map集合判断key是否存在key存在:通过字符(key),获取value(字符个数)value++put(key,value)把新的value存储到Map集合中key不存在:put(key,1)5.遍历Map集合,输出结果*/
public class Demo03MapTest {public static void main(String[] args) {//1.使用Scanner获取用户输入的字符串Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String str = sc.next();//2.创建Map集合,key是字符串中的字符,value是字符的个数HashMap<Character,Integer>  map = new HashMap<>();//3.遍历字符串,获取每一个字符for (char c : str.toCharArray()){//4.使用获取到的字符,去Map集合判断key是否存在if(map.containsKey(c)){//key存在aInteger value = map.get(c);value++;map.put(c,value);}else{//key不存在map.put(c,1);}}//5.遍历Map集合,输出结果for (Character key : map.keySet()){Integer value = map.get(key);System.out.println(key+"="+value);}}
}

P28711_JDK9对集合添加的优化_of方法


package com.itheima.demo04.JDK9;import java.util.List;
import java.util.Map;
import java.util.Set;/*JDK9的新特性:List接口,Set接口,Map接口:里边增加了一个静态方法of,可以给集合一次性添加多个元素static <E> List<E> of(E...elements)使用前提:当集合中存储的元素的个数已经确定了,不再改变时使用注意:1.of方法只适用与List接口,Set接口,Map接口,不适用于接口的实现类2.of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常3.Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常*/
public class Demo01JDK9 {public static void main(String[] args) {List<String> list =List.of("a","b","d");System.out.println(list);
//        list.add("w");//UnsupportedOperationException不支持操作异常
//        集合不能再使用add,put方法添加元素Set<String> set = Set.of("a","b","d");
//        不能有重复的元素,否则会抛出异常System.out.println(set);
//        IllegalArgumentException非法参数异常Map<String,Integer> map = Map.of("张三",18,"李四",20,"王五",3/*"张三",18*/);System.out.println(map);//Map集合Key不允许重复
//        duplicate key: 张三
//        IllegalArgumentException非法参数异常}
}

1-6 集合\第7节 Collections工具类\第8节 Map集合相关推荐

  1. android list 替换元素_Java 集合(二)——Set 集合、List 集合和 Collections 工具类...

    一.前言 在 Java 集合(一)中我们已经讲了 Collection 集合接口.Iterator 迭代器和泛型,今天我们来讲 Set 集合.List 集合 和 Collections 工具类. 二. ...

  2. JavaSE学习总结(十四)Map集合/Map和Collection的区别/HashMap/LinkedHashMap/TreeMap/集合间的嵌套/Hashtable/Collections工具类

    一.Map集合 我们知道,一个学号就能对应一个学生,并且每个学生的学号都不同,学号就像一个键,对应的学生就是该键对应的值.日常生活中经常能见到这种类似学号对应学生的例子.Java 为了我们更加方便地去 ...

  3. java(五)-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类

    day05[迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类] 主要内容 Collection集合的遍历方式: 迭代器. foreach(增强for循环) JDK ...

  4. day20Map集合(HashMapTreeMap)Collections工具类集合嵌套

    Map接口的概述         将键映射到值的对象.         Map不能包含重复的键;         每个键可以映射到最多一个值. Map接口与Collection接口有什么区别?     ...

  5. Java学习总结:58(Collections工具类)

    Collections工具类 Java提供了一个集合的工具类--Collections,这个工具类可以实现List.Set.Map集合的操作.Collections类的常用方法如下: No. 方法 类 ...

  6. Java集合框架:Collections工具类

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  7. Java—遍历集合的N种方式总结Collections工具类

    遍历集合的N种方式总结 [示例1]遍历List方法1,使用普通for循环 for(int i=0;i<list.size();i++){         //list为集合的对象名 String ...

  8. 集合框架(Map容器/Collections工具类)

    >两大主流:collection.map(接口) 底层实现为数组和链表: RationalRose工具:接口与典型实现类: Map为key和value对的形式; >HashMap(线程不安 ...

  9. java 集合工具类_Java集合中Collections工具类总结

    Collections工具类 Collections 是一个操作 Collection(Set. List )和 Map 等集合的工具类 Collection和Collections的区别? Coll ...

最新文章

  1. 超实用的58个office快捷键汇总,办公室人员必备!
  2. 自定义AlertView
  3. ansible的模块使用
  4. python做电脑软件-作为一个Python程序员,电脑上应该具备哪些软件?
  5. mysql 自身参照自身_mysql个人散乱笔记,慎重参考
  6. ssh 与 locale
  7. Java和iText导出pdf文档
  8. 最强盘点!国产数据分析BI工具怎么选?看这篇就够了
  9. CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)
  10. OpenShift 4 - 容器应用备份和恢复
  11. OCR引擎-Tesseract
  12. 对我来说,只有一件事情是重要的
  13. phpeclipse
  14. C++继承——以应用抽象类,求圆、圆内接正方形、圆外切正方形的面积和周长为例
  15. 参考文献意译翻译借鉴
  16. 沟通的艺术——情绪:感觉、思考和沟通
  17. dau计算-预测日活
  18. 基尔霍夫(kirchhoff)矩阵树定理
  19. 交互式甘特图控件VARCHART XGantt .NET ,如何从v5.1升级到v5.2?
  20. 软件测试中的网络问题

热门文章

  1. 如何修改el-popper或el-tooltip提示框箭头样式
  2. NLP自然语言处理-机器学习和自然语言处理介绍(一)
  3. Python解读:五月天线上演唱会刷屏!这里有你的青春吗?
  4. 暑期实践项目学习报告
  5. MR练习之uid的去重
  6. 开源网络负载测试工具-基准测试
  7. Postgresql ERROR: database is not accepting commands to avoid wraparound data loss in database
  8. 地图屏幕数字化全过程(转)
  9. jetson nano 散热风扇控制
  10. 【Leetcode刷题篇】leetcode589 N叉树的前序遍历