HashMap接口常用方法:

 Object put(Object key,Object val):以“键-值对”的方式进行存储。

 Object get(Object key):根据键返回相关联的值,如果不存在指定的键,返回null。

 Object remove(Object key):删除由指定的键映射的“键-值对”。

 int size():返回元素个数。

 Set KeySet():返回键的集合。

Collection values():返回值的集合。

 boolean containsKey(Object key):如果存在由指定的键映射的“键-值对”,返回true。

 

HashMap<Integer, String> map=new HashMap<Integer, String> ();

       map.put(1, "one");

       map.put(2, "two");

       map.put(3, "three");

       System.out.println(map.get(2));

       System.out.println(map);

       System.out.println(map.remove(3));

       System.out.println(map.size());

       System.out.println(map.keySet());

       System.out.println(map.values());

       System.out.println(map.containsKey(1));

       System.out.println(map.containsValue("two"));

Iterator<Map.Entry<Integer, String>>iter=map.entrySet().iterator();

while(iter.hasNext()){

           Map.Entry<Integer, String> entry=iter.next();

           Integer key=entry.getKey();

           System.out.println("key:"+key+",");

           String value=entry.getValue();

           System.out.println("value:"+value+",");

}

 

Iterator迭代器

Map键值对

Map.Entry键值对存储的数据。

Map.Entry的泛型结构跟Map的存储数据类型是一致的。

Map.entrySet()返回的是set集合。

这个set存放的就是<Map.Entry<K,V>>,数据源

 

entry.setValue(100);改变全部的值。

 

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

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

 

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Scanner;

public class EmailTest {

    static Scanner in=new Scanner(System.in);

    static HashMap<String, String> map=new HashMap<String, String>();

    public void add(){

       while(true){

           System.out.print("请输入邮箱:");

           String email=in.next();

           String[] email1=email.split("@");

           map.put(email1[0], email1[1]);

           System.out.print("是否继续?y/n:");

           if(in.next().charAt(0)=='n'){

              in.close();

              return;

           }

       }

    }

    public void showAll(){

       Iterator<Map.Entry<String, String>> list=map.entrySet().iterator();

       System.out.print("分离前的邮箱数据:");

       while(list.hasNext()){

           Map.Entry<String, String> iter=list.next();

           System.out.print(iter.getKey()+"@"+iter.getValue()+"   ");

       }

    }

    public void show(){

       Iterator<Map.Entry<String, String>> list=map.entrySet().iterator();

       System.out.println("\n分离结果如下:");

       System.out.println("邮箱名\t地址名");

       while(list.hasNext()){

           Map.Entry<String, String> iter=list.next();

           System.out.println(iter.getKey()+"\t"+iter.getValue());

       }

    }

    public static void main(String[] args) {

       EmailTest test=new EmailTest();

       test.add();

       test.showAll();

       test.show();

    }

}

 

Collections.binarySearch(list,11);查询集合当中是否包含某个元素,查询出对应元素的下标。

ArrayList<Integer> list1=new ArrayList<>();

list1.add(1);

Collections.copy(list,list1);//list为目标集合,list1为原集合,list集合的长度必须大于等于list1的长度。

System.out.println(list);

 

Collections.swap(list,index1,index2);将list集合中两个下标位置的元素对换。

Collections.replaceAll(list,1,111);将list集合中的1都换成111。

 

把任何类型对象通过add(Object ob)放入list中,认为只是Object类型。

通过get(int index)取出list中元素时必须进行强制类型转换,繁琐而且容

易出现异常。

 

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数

据类型被指定为一个参数,用在类、接口和方法的创建中。在没有泛型的情况下,

通过对类型Object的引用来实现参数的“任意化”,“任意化”的缺点是要做显

式的强制类型转换。

 

1.泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。

2.同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型

类实例是不兼容的。

3.泛型的类型参数可以有多个。

4.泛型的参数类型可以使用extends语句,例如:<T extends superclass>,习

惯上称为“有界类型”。

5.泛型的参数类型还可以是通配符类型。例如:Class<?>

classType=Class.forName(“java.lang.String”)