Map接口

Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作
Map接口最常用的实现类是HashMap

Map接口常用方法

方法名

说明

Object put(Object key,Object val)

以“键-值”对的方式进行存储

Object get(Object key)

根据键返回相关联的值,如果不存在指定的键,返回null

Object remove(Object key)

删除由指定的键映射的“键-值”对

int size()

返回元素个数

Set keySet()

返回键的集合

Collection values()

返回值的集合

boolean containsKeys(Object key)

如果存在由指定的键映射的“键-值”对,返回true

遍历Map集合
方法1:通过迭代器Iterator实现遍历

Map<String, String> map = new HashMap<String, String>();  
Iterator<Map.Entry<String, String>> entries = map.entrySet().iterator();  
while (entries.hasNext()) {  
    Map.Entry<String, String> entry = entries.next();  
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());  
}

方法2:增强型for循环

Map<String, String> map = new HashMap<String, String>();  
for (String key : map.keySet()) {  
    String value = map.get(key);  
    System.out.println("Key = " + key + ", Value = " + value);  
}

方法3:键值对

//获取键
        Set keys = map.keySet();
        for (Object key : keys) {
            System.out.println(key);
            System.out.println(map.get(key));
        }
        //获取值
        Collection values = map.values();
        for (Object value : values) {
            System.out.println(value);
        }

Map接口注意事项:
  包含接口Entry<K,V>
  在HashMap中使用Node节点实现了Entry“键-值”对
  Node节点用next属性实现了单向链表
  map底层entry+单向链表数组+单向链表
  当元素节点个数超过8时,转用红黑树进行底层存储
  使用map.remove(Object key,Object value)方法进行删除操作时,必须要key和value都匹配时才能删除
  map.put(Object key,Object value)在被用作修改时,与map.replace(Object key,Object value)作用基本一致

泛型集合

通过使用泛型我们可以解决以下容易出现的异常问题:
  List的get(int index)方法获取元素
  Map的get(Object key)方法获取元素
  Iterator的next()方法获取元素

泛型的定义:将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性(本质是参数化类型)

泛型集合可以约束集合内的元素类型
  典型泛型集合ArrayList、HashMap<K,V>
    、<K,V>表示该泛型集合中的元素类型
    泛型集合中的数据不再转换为Object

使用泛型的时候,就可以限定集合输入的类型,从而规定了集合输出的类型

Collections算法类

Java集合框架将针对不同数据结构算法的实现都保存在工具类

Collections类定义了一系列用于操作集合的静态方法

java循环引用bean怎么解决 java循环调用接口_泛型


CollectionsCollection不同,前者是集合的操作类,后者是集合接口

Collections提供的常用静态方法
  sort():排序
  binarySearch():查找(使用二分法进行查找,前提是已经排好序)
  max()\min():查找最大\最小值

Collections 排序
  Collections类可以对集合进行排序、查找和替换操作
  实现一个类的对象之间比较大小,该类要实现Comparable接口
    重写**compareTo()**方法

降序和升序的操作如下代码:

public class Student implements Comparable<Student>{
    public int id;
    private String name;
    private String sex;
    public Student(int id,String name, String sex) {
        this.id=id;
        this.name = name;
        this.sex = sex;
    }
@Override
    public int compareTo(Student o) {
//        return this.id-o.id;//升序
        return  o.id-this.id;//降序
    }
}