Java带你去看流浪世界!(十五——Ⅱ)

集合框架二

Map(key-value键值对,夫妻对)。

1.掌握Map接口的使用

HashMap<key,value>

HashTable—>Properties

public static void main(String[] args){
    Map<String,String> hashMap = new HashMap<>();
    //存储键值对
    hashMap.put("CN","中国");
    hashMap.put("CN","中国");
    hashMap.put("CN","中国");
    hashMap.put("CN","中国");
    
    //根据键获取值(键是唯一的)
    String value = hashMap.get("CN");
    System.out.println(value);
    //获取集合中的键值对数量
    int size = hashMap.size();
    System.out.println(size);
    //是否包含指定的键
    boolean containsKey = hashMap.containsKey("CN");
    System.out.println(containsKey);
    //删除值
    String removeValue = hashMap.remove("CN");
    System.out.println(removeValue);
    System.out.println(hashMap.containsKey("CN"));
    //获取所有键的集合
    set<String> keySet = hashMap.keySet();
    System.out.println(keySet);
    //获取所有值得集合
    Collection<String> values = hashMap.values();
    System.out.println(values);
    //是否为空集合?
    System.out.println(hashMap.isEmpty());
    //清空集合内容
    hashMap.clear();
    //是否为空集合?
    System.out.println(hashMap.isempty());
    
    
}
常用API

1.void put (Object key,Object value);存储键值对

2.Object get(Object key);根据键获取值(键是唯一的)

3.int size();获取集合中的键值对数量

4.boolean containsKey(Object key);是否包含指定的键

5.boolean containsValue(Objedt value);是否包含指定的值

6.Set keySet();获取所有键的集合

7.Collection vallues();获取所有值得集合

8.Object remove(Object key);根据键删除值,会返回被删除的值

9.boolean isEmpty();判断是否是空集合

10.void clear();清空集合内容

Map集合遍历
public static void main(String[] args){
    Map<String,String> hashMap = new HashMap<>();
    //存储键值对
    hashMap.put("CN","中国");
    hashMap.put("CN","中国");
    hashMap.put("CN","中国");
    hashMap.put("CN","中国");
    
    Set<String> keySet = hashMap.keySet();
    //遍历key键值,增强for
    for(String key : keySet){
        keySet.get(key);
        String value = hashMap.get(key);
        syso(key +"  "+ value);
    }
    //迭代器遍历
    Set<String> iterator = keySet.interator();
    while(iterator.hasNext()){
        String key = iterator.next();
        String value = (String)hashMap.get(key);
        System.out.println(key+"  "+value)
    }
    
    Set< Entry<String, String> > entrySet = hashMap.entrySet();
    //以条目形式行进遍历。
    for(Entry<String, String> entry : entrySet){
        String key = entry.getKey();
        String value = entry.getValue();
        System.out.println(key+"  "+value)
    }
}    

2.掌握HashMap和HashTable的区别

线程安全问题。

多线程:重要,复杂,难度高

hashTable

public static void main(String[] args){
    //创建对象,线程安全 synchronized 同步锁 
	Map<String, String> map1 = new Hashtoble<>(); 
    //hashMap不安全。
    Map<String, String> map2 = new HashMap<>();
    //map.put("CN","中国");
    //map.put("CN","中国");
    //HashTable 键和值都不允许为null
    //HashMap 键和值都可以null 如果键为null则只能存一次
    //map1.put (key,value);  
}

相同点:(面试题)

1.HashMap和Hashtable都是map接口的实现,都可以实现键值对存储。

不同点

1.HashMap键值存储都可以为空(null)如果键为null则只能存储一次。

Hashtable键值存储都不允许为空(null)。

2.HashMap是线程不安全的,效率高。

Hashtable是线程安全的,效率低。

3.掌握泛型的基本使用

在集合中用来约束/声明元素数据类型

泛型必须是引用数据类型(包装类型)

JDK1.5才出现的

包装类,注解,泛型…

1.在集合中用泛型声明元素数据类型
ArrayList<Object> array = new ArrayList<Object>();
//ArrayList<Object> array = new ArrayList<>();(√)
//ArrayList array = new ArrayList();
//ArrayList array = new ArrayList<>();(×)

1.没有泛型必须使用强转,强转有风险,必须用if判断行进强转
2.在集合中用来约束/声明元素数据类型,泛型必须是引用数据类型(包装类型)
3.利用泛型将程序变得跟家容易扩展(通过泛型占位符来进行扩展)
4.泛型中的数据类型是固定的,开始是什么,结果就是什么。

4.掌握Collections工具类的常用操作

Arrys

Collections

List<Integer> list = Arrays.asList(9,3,12,14,7,2);
//排序,升序
Collections.Sort(list);
System.out.println(list);
//最大值,最小值
int max = Collections.max(list)
    syso(list);
int min = Collections.min(list)
    syso(list);
//二分查找
int binarySearch = Collections.binarySearch(list,2);
	syso(binarySearch);
//打乱
int shuffle = Collections.shuffle(list);
	syso(list)


1.void sort(集合);对集合进行升序排序

2.int max(集合);获取集合中的最大值

3.int min(集合);获取集合中的最小值

4.int binarySearch(集合,要查找的元素);查找指定的键

5.void shuffle(集合);打乱集合元素顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值