黑马学习笔记--双例集合(Map)
来源:互联网 发布:索多玛120天 知乎 编辑:程序博客网 时间:2024/06/11 13:21
Map概述
双列集合是每个元素都有键与值两部分组成的集合,记录的是键值对对应关系。即通过键可以找到值。
- Map集合的特点:如是否可重复,是否有序仅作用在键上,如HashMap集合的键不得重复,值可以重复。
- 常用子类:
- 最常用的双列集合是Map下的子类HashMap。
- Hashtable也是Map集合的一种已被HashMap取代。
“` JAVA
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
/*
* Map:双列集合,每个元素分为键与值两部分,是一个键值得对应关系.我们经常使用键找值
*
* 最常用的Map集合是HashMap:键是唯一的且无序
*
* 用法:
*
*/
public class Demo01Test_Map {
public static void main(String[] args) {
//创建集合对象 HashMap<String, String> map = new HashMap<String, String>(); //向集合中添加元素 map.put("姓名", "Jack"); map.put("性别", "男"); map.put("年龄", "18"); map.put("分数", "18"); //可以通过键获取值 String value = map.get("姓名"); System.out.println(value); }
}
# Map基本使用- **A:Map(HashMap)的使用:**- 创建对象时加入两个泛型。Map<k,v> - key - 此映射所维护的键的类型 - value - 映射值的类型- **B:常用方法:**- public V put(K key,V value) //加入元素,则新值会覆盖掉旧值- public V get(Object key) //根据键找值``` java/* * Map:双列集合,每个元素分为键与值两部分,是一个键值得对应关系.我们经常使用键找值 * * 最常用的Map集合是HashMap:键是唯一的且无序 * * 用法: * 创建对象时,要分别制定键的泛型与值的泛型 * * Map(HashMap)的使用:创建对象时加入两个泛型。 * Map<k,v> * key - 此映射所维护的键的类型 * value - 映射值的类型 * * 常用方法: * public V put(K key,V value)//加入元素,则新值会覆盖掉旧值 * public V get(Object key) //根据键找值 * public Set<K> keySet() //返回所有键的集合 * public Collection<V> values() //返回所有值的集合 * */public class Demo01Test_Map { public static void main(String[] args) { //创建集合对象 HashMap<String, String> map = new HashMap<String, String>(); //向集合中添加元素 map.put("及时雨", "宋江"); map.put("玉麒麟", "卢俊义"); map.put("智多星", "高俅"); map.put("智多星", "吴用"); System.out.println(map); //可以通过键获取值 String name = map.get("及时雨"); System.out.println(name); String name2 = map.get("母夜叉"); System.out.println(name2); }}<div class="se-preview-section-delimiter"></div>
Map集合遍历方式
第一种
思路: 通过keySet()方法获取所有键的集合 => 遍历键的集合,获取到每一个键 => 根据键找值
/* * Map:双列集合,每个元素分为键与值两部分,是一个键值得对应关系.我们经常使用键找值 * * 最常用的Map集合是HashMap:键是唯一的且无序 * * 用法: * 创建对象时,要分别制定键的泛型与值的泛型 * * Map(HashMap)的使用:创建对象时加入两个泛型。 * Map<k,v> * key - 此映射所维护的键的类型 * value - 映射值的类型 * * 常用方法: * public V put(K key,V value)//加入元素,则新值会覆盖掉旧值 * public V get(Object key) //根据键找值 * public Set<K> keySet() //返回所有键的集合 * public Collection<V> values() //返回所有值的集合 * Map没有迭代器方法,最常用的遍历方法:先获取所有键的集合,迭代该集合,依次获取每一个键.通过键找值. */public class Demo01Test_Map { public static void main(String[] args) { //创建集合对象 HashMap<String, String> map = new HashMap<String, String>(); //向集合中添加元素 map.put("及时雨", "宋江"); map.put("玉麒麟", "卢俊义"); map.put("智多星", "高俅"); map.put("智多星", "吴用");//返回所有键的集合 Set<String> keySet = map.keySet(); System.out.println(keySet); //返回所有值得集合 Collection<String> values = map.values(); System.out.println(values); //map集合的常用遍历 Set<String> keySet2 = map.keySet(); System.out.println("=========================="); //迭代所有键的Set集合,依次获取每一个键 Iterator<String> iterator = keySet2.iterator(); while(iterator.hasNext()) { String thisKey = iterator.next(); //通过键找值,记住这里使用map集合通过键找值 String thisValue = map.get(thisKey); System.out.println(thisKey+"="+thisValue); } }}<div class="se-preview-section-delimiter"></div>
第二种
思路: 通过entrySet()方法获取所有键值对对象的集合 => 遍历键值对对象的集合,获取到每一个键值对对象 => 根据键值对对象找键和值
/* * Map集合的第二种遍历方式: * * Set<Map.Entry<K,V>> entrySet() 方法用于返回某个集合所有的键值对对象。 * Entry将键值对对应关系封装成了对象。 可以从一个Entry对象中中获取一个键值对的键与值。 * * Map.Entry是一个嵌套类 * * Entry中的方法如下: * K getKey() 获取键 * V getValue() 获取值 */public class Demo02Entry { public static void main(String[] args) { //创建集合对象 HashMap<String, String> map = new HashMap<String, String>(); //向集合中添加元素 map.put("及时雨", "宋江"); map.put("玉麒麟", "卢俊义"); map.put("智多星", "吴用"); //获取集合中所有的键值对对象的Set集合 Set<Entry<String,String>> entrySet = map.entrySet(); //迭代集合,依次获取每一个键值对对象 for(Entry<String,String> thisEntry: entrySet) { //通过键值对对象获取键 String key = thisEntry.getKey(); //通过键值对对象获取值 String value = thisEntry.getValue(); System.out.println(key+":"+value); } } }<div class="se-preview-section-delimiter"></div>
LinkedHashMap
import java.util.LinkedHashMap;import java.util.Set;/* * LinkedHashMap: * Linked链表结构,保证元素有顺序 * Hash结构保证元素唯一 * 以上约束对键起作用 */public class Demo03LinkedHashMap { public static void main(String[] args) { //创建集合对象 LinkedHashMap<String, String> map = new LinkedHashMap<String, String>(); //向集合中添加元素 map.put("近平", "丽媛"); map.put("路人甲", "路人乙"); map.put("Jack", "Rose"); map.put("Jack", "Lily"); //观察集合元素 System.out.println(map); //遍历集合 //获取所有键的集合 Set<String> keys = map.keySet(); //迭代所有键的集合 for(String thisKey: keys) { //通过键找值 String thisValue = map.get(thisKey); //打印信息 System.out.println(thisKey+":"+thisValue); } }}<div class="se-preview-section-delimiter"></div>
集合相关其他
可变参数
Collections中有一个方法可以一次加入多个元素
public static boolean addAll(Collection
Arrays的toString方法与Object的toString方法
mport java.util.ArrayList;import java.util.Arrays;/* * Arrays:数组工具类,包含了许多数组工具方法 * public static String toString(Xxx[] a) //返回字符串内容,该方法不是重写的Object类中的toString方法,而是自己又定义的toString方法 * * Object:toString方法 * System.out.println方法在打印时,会调用被打印者的toString方法 */public class Demo03Arrays_toString { public static void main(String[] args) { //如果自定义类型,不想在打印变量时打印出对象地址,而希望打印出对象属性值,则可以重写该类的toString方法 Person p = new Person("Jack",16); System.out.println(p); ArrayList<Person> list = new ArrayList<Person>(); list.add(new Person("Jack",12)); list.add(new Person("Rose",19)); System.out.println(list); int[] arr = {2,45,666,55}; System.out.println(arr); //Arrays的toString方法:看到某个数组中的内容 String ArrayInner = Arrays.toString(arr); System.out.println(ArrayInner); }}
数组转集合
数组转集合使用的是,Arrays类中的asList方法.方法签名:
public static <T> List<T> asList(T... a)
解释:
静态方法,直接类名.方式调用 方法的形参是可变参数类型,可变参数本质也是数组,传入实际数组,将该数组转成集合返回
- 注意:
数组转成集合之后,该集合不支持添加或者删除操作,否则会抛出UnsupportedOperationException异常
import java.util.Arrays;import java.util.List;/* * 数组转集合 * * Arrays: * public static <T> List<T> asList(T... a) //数组转集合 * * UnsupportedOperationException:不支持的添加或者删除操作 */public class Demo04Arrays_asList { public static void main(String[] args) { List<String> newList = Arrays.asList("Jack","Rose","Trump"); System.out.println(newList); //使用asList转成的集合,不能添加或者删除元素,该方法返回的集合长度不能改变!所以,22行运行报错. newList.add("Obama"); System.out.println(newList); }}
集合转数组
- 集合ArrayList转数组使用的是,ArrayList中的toArray()方法。
- 该方法是重载的方法:
public Object[] toArray() public <T> T[] toArray(T[] a)
import java.util.ArrayList;import java.util.Arrays;import java.util.List;/* * 集合转数组: * 集合ArrayList转为数组的方法为ArrayList的以下两个方法: * public Object[] toArray() //集合转数组 * public <T> T[] toArray(T[] a) */public class Demo05ArrayList_toArray { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); list.add(2); list.add(7); list.add(6); list.add(10); list.add(9); //调用方法,将集合转为Object类型数组 Object[] objArr = list.toArray(); System.out.println(Arrays.toString(objArr)); Integer i = (Integer) objArr[0]; //如果使用元素类型Integer的特有方法,则必须先强转成Integer,否则intValue方法不能使用,比较麻烦 System.out.println(i.intValue()); System.out.println("======================="); //调用方法,将集合转为带类型的数组 Integer[] intArr = new Integer[2]; Integer[] returnArr = list.toArray(intArr); //如果参数数组足够放下集合中所有元素,就放入参数数组中,返回参数数组 //如果参数数组无法放下集合中所有元素,则参数数组只起到确定类型作用,方法逻辑会自动创建新数组存储集合内容,并返回. System.out.println(Arrays.toString(intArr)); System.out.println(Arrays.toString(returnArr)); //带泛型后,元素类型直接就是集合中的元素类型,避免了强转的问题 Integer integer = returnArr[0]; System.out.println(integer.intValue()); }}
- 黑马学习笔记--双例集合(Map)
- 黑马程序员---Map集合 学习笔记
- (黑马程序员)学习笔记,Map集合
- 黑马程序员---Map集合学习笔记
- 黑马程序员---java学习笔记之map集合
- Map集合学习笔记
- Map集合学习笔记
- Map集合学习笔记
- Java集合框架之Map集合学习和笔记——黑马训练营
- 黑马学习笔记--单例集合(Collection)
- 黑马程序员java笔记之一-----Map集合
- 黑马程序员-java集合笔记之map
- Java学习笔记-----集合Map
- 黑马程序员java学习—Map集合
- 黑马学习笔记_集合
- 黑马程序员-学习笔记-集合
- 黑马学习笔记--集合初识
- 黑马程序员--Java笔记10--Collection集合、 Map集合、泛型
- 黑马学习笔记--单例集合(Collection)
- API接口开发简述示例
- Android源码编译、下载、导入Android Studio过程记录(MacOS 10.12)
- SQL Server 基础之表、临时表、表变量
- MyBatis学习之入门篇(一)
- 黑马学习笔记--双例集合(Map)
- xshell连接本地linux,可以ping通
- linux下gdb调试
- 黑马学习笔记--泛型
- TCON控制字及TMOD寄存器
- (CF792 ABCD题解) 模拟,树状数组
- C# winform制作不规则窗体
- 网页框架
- rman备份文件格式