HashMap常用的方法有:
put(key,value)添加映射数据。
remove(key)删除映射数据。
clear() 删除所有的数据。
size() 可以查看元素的数量。
get(key) 获取健值key对应的value
replace(key,旧值,新值) 将key的旧值替换为新值。
例子:
HashMap map=new HashMap();
//map.put(键,值);
map.put("a", 12);//键 和 值 一一对应 键不可以重复 值可以重复
map.put("b", 13);
map.put("c", 25);
map.put("d", 35);
System.out.println(map);
map.remove("a");//移除映射数据
System.out.println(map);
System.out.println(map.get("b "));
System.out.println("包含的元素数量:"+map.size());//回去包含元素的数量
map.replace("a",12,19);//替换原来键上的值 map.replace("键",旧值,新值);
System.out.println(map);
map.clear();//删除全部的值
System.out.println(map);
foreach循环
foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了便利。从英文字面意思理解foreach也就是“for 每一个”的意思,也就是把集合的每一个元素都过一遍。foreach语句是for语句的特殊简化版本,foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。
语法式格:
for(元素类型 元素变量:要遍历的对象合集){
。。。循环体。。。
}
例子:
HashMap<String,Integer > map=new HashMap<>();
map.put( "石家庄",5);
map.put("沧州",6 );
map.put("保定",8 );
map.put("北京",10 );
map.put("天津",16);
System.out.println("输入集合的内容:"+map);
//keySet方法来获取所有的键值
System.out.println("集合map所有key值为:"+map.keySet());//
System.out.println();
// System.out.println("用for循环遍历");
// for(int i=0;i<map.size();i++) {//普通for循环不好遍历
// System.out.println(map.get(i));
//
// }
System.out.println();
//将上边的for 循环改为foreach循环来遍历
for(String i:map.keySet()) {
System.out.println("地点:"+i+ " "+"编号:"+map.get(i));
//map.get(i)是获取i对应的值
}
System.out.println();
System.out.println("使用map的forEach方法进行遍历");
//map 的forEach方法
map.forEach((k,v)->{
System.out.println(k+":"+v);});
//k v 是随便定义的 ->的意思是让它执行按右边
//System.out.pringln(k+":"+v)这种输出方事输出
泛型的概念:
Java 泛型(generics)是 JDK 5 中引入的一个新特性,泛型的本质是参数化类型,就是说将数据类型也指定为一个参数,数据类型参数化了。
这种参数类型可以在类,接口和方法的创建,分别称为泛型类,泛型接口,泛型方法。
泛型作用:
(1).将运行时期出现的问题ClassCastException转移到编译时期,方便程序员解决问题,让运行时期问题减少。
(2).避免了强制转换的麻烦。
自定义泛型
格式
修饰符 class 类名 <泛型类型> {
类体
}
自定义泛型用一些约定俗成的字母来表示不同的类型,建议使用 E,T,K,V,?;
泛型类型只能是一种引用类型,
E—— Element 表示元素 特性是一种枚举
T—— Type 类,是指Java类型
K—— Key 键
V—— Value 值
?——在使用中表示不确定类型 ?被称作是泛型通配符。
作用及用法
作用:
Object是Java中所有类的根类,是具体的。使用object的时候可能是需要类型强制转换的。但是用自定义泛型变量中T、?这类变量类型,在实际用到之前可以提前将其确定好,这样就不需要再发生强制类型转换,保障数据的真实性。
- 自定义泛型
- 泛型类:
//自定义泛型
class Animal <T>{
public T t;//任意类型的属性
public void sett( T t ) {//任意一个类型的参数
this.t=t;
}
public T gett() {//返回任意一个类型的方法也是个泛型方法
return this.t;
}
}
class Dog{
String name;
int age;
void eat() {
System.out.println("一只名叫"+name+"的"+age+"的狗"+ "偷吃东西");
}
}
class Fish{
String name;
int age;
void eat() {
System.out.println("一只名叫"+name+"的"+age+"的鱼"+ "偷吃东西");
}
}
public class 泛型 { public static void main(String[] args) {
// TODO Auto-generated method stub
Animal <String> animal=new Animal<String>();//指定<T>为Strting类型
animal.sett("大黄");//这里类型就会被认为是String类型
System.out.println(animal.gett());//调用gett()方法
Animal<Dog> dog=new Animal<Dog>();
Dog d=new Dog();
d.name="大白";
d.age=2;
dog.sett(d);
dog.gett().eat();
System.out.println();
Animal<Fish> fish=new Animal<Fish>();
Fish f=new Fish();
f.name="小鲫鱼";
f.age=12;
fish.sett(f);
fish.gett().eat();
System.out.println();
泛型方法:
//定义了一个泛型方法
public static <T> void print(T t) {
System.out.println(t.toString());
}
public static void main(String[] args) {
// TODO Auto-generated method stub
print("大家哈皮");
print(411);
泛型接口:
interface Jk1<T>{
public T input(T t);//输入任意类型一个值返回
}
class TestJk1 implements Jk1<String>{ @Override
public String input(String t) {
// TODO Auto-generated method stub
return t;
}
}
//测试类
public class 泛型接口 { public static void main(String[] args) {
// TODO Auto-generated method stub
//泛型接口演示
TestJk1 ff=new TestJk1();
System.out.println(ff.input("灌灌灌灌灌"));
泛型的上下限:
泛型上下限就是将所操作的数据类型限定在一个范围内。分为上限和下限。
上限:? extends E 接收E类型或是其子类
下限:? super E 接收E类型或是E的父类
写法 <? extends E>
<? super E >
import java.util.ArrayList;
class Anmial{
String name;
int age;
}
class Dog1 extends Animal{
String Tixing;
}
class LangDog extends Dog1{
String pinzhong;
}class SelsctDog{
public void buy1(ArrayList<? extends Dog1> s) {//Dog1 及他下面的子类 不能有Animal
System.out.println("调用父类父类及以下");
}
public void buy2(ArrayList< ?super Dog1>s){// Dog1及他上面的父类不能有LongDog
System.out.println("调用父类及以上");
}
}
//测试类
public class 泛型上下限 { public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList< Dog1> list1=new ArrayList<Dog1>();
SelsctDog se1= new SelsctDog();
se1.buy1(list1);
ArrayList< Animal> list2=new ArrayList<Animal>();
se1.buy2(list2);;