文章目录

  • Map家族
    • 1. HashMap(实现类)
    • 2. LinkedHashMap
    • 3. Hashtable
    • 4. ConcurrentHashMap
    • 5. TreeMap
    • 6. Properties
    • 7. Collections工具类
    • 8. EnumSet工具类

Map家族

特点:键值对存储

(1),为什么需要使用map?前面源码分析中常见它的身影,在里面充当了一个什么作用?
Map存储的元素为键值对,通常称为key-value
而key是不允许重复的
Set唯一
(2),掌握Map的常用方法–整体有个印象,我们首先掌握的是HashMap

(3),一一掌握上述的每个方法的应用(采用String,Integer等JDK已提供的引用数据类型)
基本方法的使用
重点掌握数据的存储及遍历的方式(两种遍历方式都要掌握)
(4),深入掌握HashMap的关键技术点,如何区分是否重复?以自定义类型来作为key探究问题的关键
—Map<String,String>
—Mp<自定义类型,String>
看要怎么保证键的唯一性?自定义类型也需要根据业务需求来确定唯一性,(hashcode,equals)

(5),LinkedHashMap
上述的HashMap存储的数据是唯一但无序的,而如果采用LinkedHashMap则是有序且唯一的

(6),TreeMap
有排序的功能,先采用String类型或Integer类型来学习TreeMap的特点
—TreeMap<String,String>
—TreeMap<Integer,Integer>
再以自定义类型来作为key,这个时候又需要我们做什么来保证可排序性?
—TreeMap<自定义类型,String>

1. HashMap(实现类)

特点:key是唯一的

package com.dream.hashmap_class;import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;public class Test01 {public static void main(String[] args) {/*** 使用HashMap的常用方法*/HashMap<String, Integer> map = new HashMap<>();//添加元素map.put("麻生希", 29);map.put("椎名空", 24);map.put("爱田奈奈", 36);map.put("古川伊织", 28);map.put("小峰由衣", 34);map.put("北条麻衣", 34);//替换 - 如果key存在,直接替换value值,并返回原来的valueInteger put = map.put("麻生希", 30);System.out.println("获取被替换掉的原值:" + put);//替换map.replace("麻生希", 31);//通过key替换valuemap.replace("麻生希", 31, 32);//通过key和value替换value//如果key存在,返回值key对应的value//如果key不存在,添加元素Integer putIfAbsent = map.putIfAbsent("xxx", 1000);System.out.println(putIfAbsent);//添加整个集合HashMap<String, Integer> newMap1 = new HashMap<>();newMap1.put("古川伊织", 29);newMap1.put("aaa", 28);newMap1.put("bbb", 28);newMap1.put("ccc", 28);map.putAll(newMap1);//删除map.remove("爱田奈奈");//通过key删除映射关系map.remove("椎名空", 100);//通过key和value删除映射关系//通过Key获取ValueInteger v = map.get("古川伊织");System.out.println("通过Key获取Value:" + v);System.out.println("判断集合中是否有某个key:" + map.containsKey("椎名空"));System.out.println("判断集合中是否有某个value:" + map.containsValue(34));System.out.println("获取key对应的value值,如果key不存在,就返回默认值:" + map.getOrDefault("椎名空1", 100));System.out.println("判断集合中是否没有元素:" + map.isEmpty());System.out.println("获取集合中映射关系的个数:" + map.size());//将Map集合中所有的value取出存入到Collection集合中Collection<Integer> values = map.values();System.out.println(Arrays.toString(values.toArray()));System.out.println("-------------------");//遍历//keySet():将map集合中所有的key取出,存入Set集合中,遍历Set集合,将Key依次取出,再取出对应的valueSet<String> keySet = map.keySet();for (String key : keySet) {Integer value = map.get(key);System.out.println(key + " -- " + value);}System.out.println("-------------------");//entrySet():将map集合中所有的Entry取出,存入Set集合中,遍历Set集合,将Entry依次取出,再取出Entry里的key和valueSet<Entry<String, Integer>> entrySet = map.entrySet();for (Entry<String, Integer> entry : entrySet) {String key = entry.getKey();Integer value = entry.getValue();System.out.println(key + " -- " + value);}}
}

2. LinkedHashMap

package com.dream.linkedhashmap_class;import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.Set;public class Test01 {public static void main(String[] args) {/*** 使用LinkedHashMap的常用方法*/LinkedHashMap<String, Integer> map = new LinkedHashMap<>();//添加元素map.put("麻生希", 29);map.put("椎名空", 24);map.put("爱田奈奈", 36);map.put("古川伊织", 28);map.put("小峰由衣", 34);map.put("北条麻衣", 34);//替换 - 如果key存在,直接替换value值,并返回原来的valueInteger put = map.put("麻生希", 30);System.out.println("获取被替换掉的原值:" + put);//替换map.replace("麻生希", 31);//通过key替换valuemap.replace("麻生希", 31, 32);//通过key和value替换value//如果key存在,返回值key对应的value//如果key不存在,添加元素Integer putIfAbsent = map.putIfAbsent("xxx", 1000);System.out.println(putIfAbsent);//添加整个集合LinkedHashMap<String, Integer> newMap1 = new LinkedHashMap<>();newMap1.put("古川伊织", 29);newMap1.put("aaa", 28);newMap1.put("bbb", 28);newMap1.put("ccc", 28);map.putAll(newMap1);//删除map.remove("爱田奈奈");//通过key删除映射关系map.remove("椎名空", 100);//通过key和value删除映射关系//通过Key获取ValueInteger v = map.get("古川伊织");System.out.println("通过Key获取Value:" + v);System.out.println("判断集合中是否有某个key:" + map.containsKey("椎名空"));System.out.println("判断集合中是否有某个value:" + map.containsValue(34));System.out.println("获取key对应的value值,如果key不存在,就返回默认值:" + map.getOrDefault("椎名空1", 100));System.out.println("判断集合中是否没有元素:" + map.isEmpty());System.out.println("获取集合中映射关系的个数:" + map.size());//将Map集合中所有的value取出存入到Collection集合中Collection<Integer> values = map.values();System.out.println(Arrays.toString(values.toArray()));System.out.println("-------------------");//遍历//keySet():将map集合中所有的key取出,存入Set集合中,遍历Set集合,将Key依次取出,再取出对应的valueSet<String> keySet = map.keySet();for (String key : keySet) {Integer value = map.get(key);System.out.println(key + " -- " + value);}System.out.println("-------------------");//entrySet():将map集合中所有的Entry取出,存入Set集合中,遍历Set集合,将Entry依次取出,再取出Entry里的key和valueSet<Entry<String, Integer>> entrySet = map.entrySet();for (Entry<String, Integer> entry : entrySet) {String key = entry.getKey();Integer value = entry.getValue();System.out.println(key + " -- " + value);}}
}

3. Hashtable

package com.dream.hashtable_class;import java.util.Arrays;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Map.Entry;
import java.util.Set;public class Test01 {public static void main(String[] args) {/*** 使用Hashtable的常用方法*/Hashtable<String, Integer> map = new Hashtable<>();//添加元素map.put("麻生希", 29);map.put("椎名空", 24);map.put("爱田奈奈", 36);map.put("古川伊织", 28);map.put("小峰由衣", 34);map.put("北条麻衣", 34);//替换 - 如果key存在,直接替换value值,并返回原来的valueInteger put = map.put("麻生希", 30);System.out.println("获取被替换掉的原值:" + put);//替换map.replace("麻生希", 31);//通过key替换valuemap.replace("麻生希", 31, 32);//通过key和value替换value//如果key存在,返回值key对应的value//如果key不存在,添加元素Integer putIfAbsent = map.putIfAbsent("xxx", 1000);System.out.println(putIfAbsent);//添加整个集合Hashtable<String, Integer> newMap1 = new Hashtable<>();newMap1.put("古川伊织", 29);newMap1.put("aaa", 28);newMap1.put("bbb", 28);newMap1.put("ccc", 28);map.putAll(newMap1);//删除map.remove("爱田奈奈");//通过key删除映射关系map.remove("椎名空", 100);//通过key和value删除映射关系//通过Key获取ValueInteger v = map.get("古川伊织");System.out.println("通过Key获取Value:" + v);System.out.println("判断集合中是否有某个key:" + map.containsKey("椎名空"));System.out.println("判断集合中是否有某个value:" + map.containsValue(34));System.out.println("获取key对应的value值,如果key不存在,就返回默认值:" + map.getOrDefault("椎名空1", 100));System.out.println("判断集合中是否没有元素:" + map.isEmpty());System.out.println("获取集合中映射关系的个数:" + map.size());//将Map集合中所有的value取出存入到Collection集合中Collection<Integer> values = map.values();System.out.println(Arrays.toString(values.toArray()));System.out.println("-------------------");//遍历//keySet():将map集合中所有的key取出,存入Set集合中,遍历Set集合,将Key依次取出,再取出对应的valueSet<String> keySet = map.keySet();for (String key : keySet) {Integer value = map.get(key);System.out.println(key + " -- " + value);}System.out.println("-------------------");//entrySet():将map集合中所有的Entry取出,存入Set集合中,遍历Set集合,将Entry依次取出,再取出Entry里的key和valueSet<Entry<String, Integer>> entrySet = map.entrySet();for (Entry<String, Integer> entry : entrySet) {String key = entry.getKey();Integer value = entry.getValue();System.out.println(key + " -- " + value);}}
}

4. ConcurrentHashMap

package com.dream.concurrenthashmap_class;import java.util.Arrays;
import java.util.Collection;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;public class Test01 {public static void main(String[] args) {/*** 使用ConcurrentHashMap的常用方法*/ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();//添加元素map.put("麻生希", 29);map.put("椎名空", 24);map.put("爱田奈奈", 36);map.put("古川伊织", 28);map.put("小峰由衣", 34);map.put("北条麻衣", 34);//替换 - 如果key存在,直接替换value值,并返回原来的valueInteger put = map.put("麻生希", 30);System.out.println("获取被替换掉的原值:" + put);//替换map.replace("麻生希", 31);//通过key替换valuemap.replace("麻生希", 31, 32);//通过key和value替换value//如果key存在,返回值key对应的value//如果key不存在,添加元素Integer putIfAbsent = map.putIfAbsent("xxx", 1000);System.out.println(putIfAbsent);//添加整个集合ConcurrentHashMap<String, Integer> newMap1 = new ConcurrentHashMap<>();newMap1.put("古川伊织", 29);newMap1.put("aaa", 28);newMap1.put("bbb", 28);newMap1.put("ccc", 28);map.putAll(newMap1);//删除map.remove("爱田奈奈");//通过key删除映射关系map.remove("椎名空", 100);//通过key和value删除映射关系//通过Key获取ValueInteger v = map.get("古川伊织");System.out.println("通过Key获取Value:" + v);System.out.println("判断集合中是否有某个key:" + map.containsKey("椎名空"));System.out.println("判断集合中是否有某个value:" + map.containsValue(34));System.out.println("获取key对应的value值,如果key不存在,就返回默认值:" + map.getOrDefault("椎名空1", 100));System.out.println("判断集合中是否没有元素:" + map.isEmpty());System.out.println("获取集合中映射关系的个数:" + map.size());//将Map集合中所有的value取出存入到Collection集合中Collection<Integer> values = map.values();System.out.println(Arrays.toString(values.toArray()));System.out.println("-------------------");//遍历//keySet():将map集合中所有的key取出,存入Set集合中,遍历Set集合,将Key依次取出,再取出对应的valueSet<String> keySet = map.keySet();for (String key : keySet) {Integer value = map.get(key);System.out.println(key + " -- " + value);}System.out.println("-------------------");//entrySet():将map集合中所有的Entry取出,存入Set集合中,遍历Set集合,将Entry依次取出,再取出Entry里的key和valueSet<Entry<String, Integer>> entrySet = map.entrySet();for (Entry<String, Integer> entry : entrySet) {String key = entry.getKey();Integer value = entry.getValue();System.out.println(key + " -- " + value);}}
}
package com.dream.concurrenthashmap_class;import java.util.HashMap;
import java.util.Hashtable;
import java.util.concurrent.ConcurrentHashMap;public class Test02 {public static void main(String[] args) {/*** HashMap vs Hashtable vs ConcurrentHashMap* * HashMap 允许存储null键* Hashtable 不允许存储null键* ConcurrentHashMap 不允许存储null键*///      HashMap<Object,Object> map = new HashMap<>();
//      map.put(null, "111");Hashtable<Object,Object> map = new Hashtable<>();map.put(null, "111");//      ConcurrentHashMap<Object,Object> map = new ConcurrentHashMap<>();
//      map.put(null, "111");}}

5. TreeMap

package com.dream.treemap_class;import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;public class Test01 {public static void main(String[] args) {/*** 做实验理解 TreeMap 的自然排序* * 注意:针对于Key排序*/TreeMap<String, Integer> map = new TreeMap<>();map.put("b", 34);map.put("d", 28);map.put("a", 33);map.put("e", 20);map.put("c", 26);Set<Entry<String,Integer>> entrySet = map.entrySet();for (Entry<String, Integer> entry : entrySet) {String key = entry.getKey();Integer value = entry.getValue();System.out.println(key + " -- " + value);}}}
package com.dream.treemap_class;import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;public class Test02 {public static void main(String[] args) {/*** 使用内置比较器*/TreeMap<Student, String> map = new TreeMap<>();map.put(new Student("麻生希", '女', 28, "2101", "001"), "123456789");map.put(new Student("椎名空", '女', 23, "2101", "002"), "123456789");map.put(new Student("北岛玲", '女', 27, "2101", "003"), "123456789");map.put(new Student("水野朝阳", '女', 31, "2101", "004"), "123456789");map.put(new Student("三上悠亚", '女', 26, "2101", "005"), "123456789");map.put(new Student("濑亚美莉", '女', 32, "2101", "006"), "123456789");map.put(new Student("爱田奈奈", '女', 36, "2102", "001"), "123456789");map.put(new Student("深田咏美", '女', 28, "2102", "002"), "123456789");map.put(new Student("小西满里惠", '女', 28, "2102", "003"), "123456789");map.put(new Student("桃谷绘里香", '女', 29, "2102", "004"), "123456789");map.put(new Student("明日花绮罗", '女', 29, "2102", "005"), "123456789");map.put(new Student("铃原爱蜜莉", '女', 29, "2102", "006"), "123456789");map.put(new Student("波多野结衣", '女', 34, "2102", "007"), "123456789");Set<Entry<Student,String>> entrySet = map.entrySet();for (Entry<Student, String> entry : entrySet) {Student key = entry.getKey();String value = entry.getValue();System.out.println(key + " -- " + value);}}}

Student类

package com.dream.treemap_class;public class Student implements Comparable<Student>{private String name;private int age;private char sex;private String classId;private String id;public Student() {}public Student(String name, char sex,int age, String classId, String id) {this.name = name;this.age = age;this.sex = sex;this.classId = classId;this.id = id;}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;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}public String getClassId() {return classId;}public void setClassId(String classId) {this.classId = classId;}public String getId() {return id;}public void setId(String id) {this.id = id;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", sex=" + sex + ", classId=" + classId + ", id=" + id + "]";}@Overridepublic boolean equals(Object obj) {if(this == obj){return true;}if(obj instanceof Student){Student stu = (Student) obj;if(this.classId.equals(stu.classId) && this.id.equals(stu.id)){return true;}}return false;}//排序方法//排序规则:年龄排序//返回值:负数-比比较对象小 //返回值:正数-比比较对象大 //返回值:0-和比较对象一致(不存储)@Overridepublic int compareTo(Student o) {return this.age - o.age;}}

测试类

package com.dream.treemap_class;import java.util.Map.Entry;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeMap;public class Test03 {public static void main(String[] args) {/*** 使用外置比较器*///外置比较器//比较规则:先判断两个学生是否相同,再按照姓名长度,再按照年龄TreeMap<Student, String> map = new TreeMap<>(new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {if(o1.equals(o2)){return 0;}if(o1.getName().length() != o2.getName().length()){return o1.getName().length() - o2.getName().length();}if(o1.getAge() != o2.getAge()){return o1.getAge() - o2.getAge();}return 1;}});map.put(new Student("麻生希", '女', 28, "2101", "001"), "123456789");map.put(new Student("椎名空", '女', 23, "2101", "002"), "123456789");map.put(new Student("北岛玲", '女', 27, "2101", "003"), "123456789");map.put(new Student("水野朝阳", '女', 31, "2101", "004"), "123456789");map.put(new Student("三上悠亚", '女', 26, "2101", "005"), "123456789");map.put(new Student("濑亚美莉", '女', 32, "2101", "006"), "123456789");map.put(new Student("爱田奈奈", '女', 36, "2102", "001"), "123456789");map.put(new Student("深田咏美", '女', 28, "2102", "002"), "123456789");map.put(new Student("小西满里惠", '女', 28, "2102", "003"), "123456789");map.put(new Student("桃谷绘里香", '女', 29, "2102", "004"), "123456789");map.put(new Student("明日花绮罗", '女', 29, "2102", "005"), "123456789");map.put(new Student("铃原爱蜜莉", '女', 29, "2102", "006"), "123456789");map.put(new Student("波多野结衣", '女', 34, "2102", "007"), "123456789");Set<Entry<Student,String>> entrySet = map.entrySet();for (Entry<Student, String> entry : entrySet) {Student key = entry.getKey();String value = entry.getValue();System.out.println(key + " -- " + value);}}}

6. Properties

package com.dream.properties_class;import java.io.IOException;
import java.util.Properties;public class Test01 {public static void main(String[] args) throws IOException {/*** 操作Properties*///创建配置文件对象Properties p = new Properties();//把文件加载到对象中p.load(Test01.class.getClassLoader().getResourceAsStream("DBConfig.properties"));//获取配置文件中的数据String username = p.getProperty("username");String password = p.getProperty("password");System.out.println(username + " -- " + password);}}

DBConfig.properties

username=hhy
password=123123

7. Collections工具类

package com.dream.collections_class;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class Test01 {public static void main(String[] args) {/*** 使用集合工具类操作集合*/ArrayList<Integer> list = new ArrayList<>();//批量添加Collections.addAll(list, 4,6,2,1,5,3);//排序Collections.sort(list);//       Collections.sort(list, new Comparator<Integer>() {//          @Override
//          public int compare(Integer o1, Integer o2) {//              // TODO Auto-generated method stub
//              return o2-o1;
//          }
//      });System.out.println("查询元素在集合中的下标:" + Collections.binarySearch(list, 3));//拷贝ArrayList<Integer> newList = new ArrayList<>();newList.add(0);newList.add(0);newList.add(0);newList.add(0);newList.add(0);newList.add(0);Collections.copy(newList, list);System.out.println("获取最大值:" + Collections.max(newList));System.out.println("获取最小值:" + Collections.min(newList));System.out.println(newList);}}

8. EnumSet工具类

Signal接口

package com.dream.enum_util_class;public enum Signal {RED, YELLOW, GREEN;
}

测试类

package com.dream.enum_util_class;import java.util.EnumSet;public class Test01 {public static void main(String[] args) {/*** * EnumSet工具类* * 将枚举类中对象放入Set集合中*/EnumSet<Signal> set = EnumSet.allOf(Signal.class);for (Signal signal : set) {System.out.println(signal);}}
}

测试类

package com.dream.enum_util_class;import java.util.EnumMap;
import java.util.Map.Entry;
import java.util.Set;public class Test02 {public static void main(String[] args) {/*** * EnumMap工具类* * 将枚举类中对象放入Map集合中*/EnumMap<Signal, String> map = new EnumMap<>(Signal.class);map.put(Signal.RED, "红灯");map.put(Signal.YELLOW, "黄灯");map.put(Signal.GREEN, "绿灯");Set<Entry<Signal,String>> entrySet = map.entrySet();for (Entry<Signal, String> entry : entrySet) {Signal key = entry.getKey();String value = entry.getValue();System.out.println(key + " -- " + value);}}
}

Day17-集合(中)Map相关推荐

  1. List<String,Object>针对于集合中Map某个属性值求和

    假如你需要List<Map<String,Object>> 中Map中的每个属性值进行累加求和 代码如下: List<Map<String, Object>& ...

  2. 【Kotlin】Kotlin 语言集合中的高阶函数详解 ( 数据类 data class | maxBy | minBy | filter | map | any | count | find )

    文章目录 I . List 集合高阶函数引入 II . Kotlin 数据类 ( data class ) III . Java 代码 与 Kotlin 代码实现对比 ( 查询年龄最大的 ) IV . ...

  3. java中Map集合、模拟斗地主洗牌发牌、JDK9对集合添加的优化

    1.1 Map集合概述 Map集合概述 Map==>映射(一个对应一个) Map是一个接口,只要实现了该接口的类都是双列集合. 双列集合每次存储元素时都需要存储两个元素,一个元素称为键,一个元素 ...

  4. map操作 java,Java中Map基本操作

    Java中Map基本操作 void:clear() 清空集合中所有的对 boolean:containsKey(Object key) 判断是否包含指定的键 boolean:containsValue ...

  5. Map集合中value()方法与keySet()、entrySet()区别 ——转载

    为什么80%的码农都做不了架构师?>>>    在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入 ...

  6. java list转成map对象_将List集合中的map对象转为List对象形式--封装类

    importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;impo ...

  7. Java集合框架中Map接口的使用

    在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...

  8. java map key是否存在_java中如何判断map集合中是否存在key

    有两种方法可以判断map集合中是否存在某个key. 方法1:直接使用java api提供的containsKey(): 方法2:循环遍历,逐个比较. java相关视频推荐:java视频 具体实现代码如 ...

  9. 【Groovy】map 集合 ( 根据 Key 获取 map 集合中对应的值 | map.Key 方式 | map.‘Key’ 方式 | map[‘Key’] 方式 | 代码示例 )

    文章目录 一.根据 Key 获取 map 集合中对应的值 1.通过 map.Key 方式获取 map 集合中的值 Value 2.通过 map.'Key' 方式获取 map 集合中的值 Value 3 ...

  10. JAVA中Map集合的使用举例

    首先创建一个Emp类,再将几个Emp对象添加到Map集合中. Emp的id作为Map的键,并将id为"005"的对象从集合中删除. package com.han;import j ...

最新文章

  1. xuanke java_wangshangxuankexitong - WEB源码|JSP源码/Java|源代码 - 源码中国
  2. 最全的Centos6.10详细安装Oracle 11G R2图文教程
  3. 自己动手实现OpenGL之glViewPort(一)
  4. 赞!用Python获取A股行情数据的4种方法
  5. 戴尔服务器显示e1810,戴尔服务器提示: PowerEdge2950 E1810 HDD 1 Fault该如何解决?求帮助!!!...
  6. quot;蓝筹quot;如何使程序猿?
  7. Android 系统性能优化(53)---功耗优化battery-historian V2.0的数据获取
  8. win7 java jna找不到_java – 资源路径中找不到JNA本机支持(/com/sun/jna/linux-arm/libjnidispatch.so)...
  9. 【NOIP2010】【Luogu1540】机器翻译
  10. 不讲武德,Java分布式面试题集合含答案!
  11. 美区苹果id关闭双重认证_苹果帐号在双重认证的情况下被更改受信任手机号,导致帐号被锁,且无法解锁...
  12. 华为认证数通HCIE面试之Qos完整解析
  13. 一看就会的高效Discuz初始化入门安装方法
  14. c语言通讯录设计毕业论文,本科毕业设计(论文)_c语言.doc
  15. 华硕路由 ac ax_【路由器】华硕网络开启802.11ax电竞生态
  16. java动态图片_java实现gif效果(java显示动态图片)
  17. 怎么看Mac电脑的序列号,Mac序列号是多少
  18. sqlserver 取余和取整
  19. Livy 安装使用说明
  20. 到底什么是ERP系统

热门文章

  1. 网络编程及TCP/UDP协议
  2. BZOJ1005 [HNOI2008]明明的烦恼
  3. 基于对象的软件定义存储——联想 NetApp DXL系列对象存储方案
  4. 有趣的Shellcode和栈
  5. 刚毕业月薪3000,心好慌
  6. Android自定义view之围棋动画
  7. 电位器的主要参数有哪些?
  8. 计算机主机的拆卸的注意事项,如何进行电脑主机除尘及板卡维护
  9. C语言——连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题, 如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做, 10道题做完
  10. 揭秘分享 | 汽车金融细分风控场景和反欺诈策略