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(" 分离结果如下:");
System.out.println("邮箱名 地址名");
while(list.hasNext()){
Map.Entry<String, String> iter=list.next();
System.out.println(iter.getKey()+" "+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”)