J2EE基础之集合框架Map

文章目录

一、Map集合的特点

 二、Map集合的遍历方式

三、常用实现类HashMap 

四、泛型

五、集合框架工具类


一、Map集合的特点

1.键值对:一个键对应一个值

map集合的一些方法

注意:map集合中增加和修改都是用.put方法实现的,删除元素时.remove返回的是该元素的value值

Map<String,Integer> map = new HashMap<>();
		//V put(K key, V value)
		map.put("a", 1);
		map.put("b", 2);
		map.put("c", 3);
		map.put("d", 4);
		System.out.println(map);
		
		
		Object remove = map.remove("b");
		System.out.println(remove);
		System.out.println(map);
		
		//修改 也是调用put方法
		map.put("c", 32);
		System.out.println(map);
		
		//查询
		System.out.println(map.get("c"));
		
		//查询所有
		//1.先拿到map集合中的所有key
		Set keys = map.keySet();
		for (Object key : keys) {
			System.out.println("键:"+key+"值:"+map.get(key));
		}

2.key键可以为空

如图所示:可以看到第四个对象的key为null但同样能够编译运行

 二、Map集合的遍历方式

1.通过遍历键拿到值

 

与其他两个集合不同的是Map集合是以键值对的形式来储存元素的

2.entrySet

该映射中包含的映射关系是Set集合。将Map集合中的键和值映射关系打包成为一个对象放进Set集合中 如图所示:

 

3.KeySet

将map集合中所有的键存入到Set集合,再根据get方法,获取每一个键所对应的值 如图所示:

三、常用实现类HashMap 

Map集合下有HashMap和TreeMap、HashTable(少用)

HashMap:同步又排队 安全

举例:统计字符串各个字母出现的次数

示例代码:

String s = "abcdbbdbjshhjjajjssjjnckeokjd";
char[] arr = s.toCharArray();
		Map<Character, Integer> map = new TreeMap<>();
		for (char c : arr) {
			Integer value = map.get(c);
			if(value == null) {
				map.put(c, 1);
			}else {
				map.put(c, value+1);
			}
			//System.out.println(value);
			
		}
		Set<Entry<Character, Integer>> entrySet = map.entrySet();
		for (Entry<Character, Integer> entry : entrySet) {
			System.out.println(entry.getKey()+":"+entry.getValue());
		}
	

输出效果:

 实现思路:先将字符串分割成一个字符数组,在遍历拿个单个字符进行判断,如果该字符未出现过,也就是说该Value值为null,就将该键的Value值初始化为1,如果已经出现过,就在原来值得基础上加1

四、泛型

概念:通常在写一个类、接口或者方法时会发生数据类型或者不确定时,可以用<字母>来表示一个不确定的数据类型将潜在的问题暴露出来,早点预防这种错误

作用:将运行期出现的异常转换为编译期间的错误

           提高了代码的健壮性

    泛型类与泛型方法代码展示:   

public static void main(String[] args) {
		Set<Integer> set = new HashSet<>();
		set.add(1);
		set.add(2);
		set.add(3);
		set.add(4);
		set.add(5);
		for (Object obj : set) {
			if(Integer.valueOf(obj.toString()) % 2 == 0) {
				System.out.println(obj);
			}
		}
	}
}
class BookDao{
	//add
	//del
	//edit
	//list
}
class userdao extends Basedao{

	@Override
	public void add(Object t) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void del(Object t) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void edit(Object t) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public List list(Object t) {
		// TODO Auto-generated method stub
		return null;
	}
	
}
class Basedao<T>{
		void add(T t) {
			
		}
		void del(T t) {
			
		}
		void edit(T t) {
			
		}
		List<T> list(T t) {
			return null;
		}
}


class Result {
	<T>void add(T t) {
	}

 目前了解即可

五、集合框架工具类

  1.Collections

排序:直接调用Collections方法中的Sort方法可以直接排序

public static void main(String[] args) {
		
		List<Person> list = new ArrayList<>();
		list.add(new Person("b", 18));
		list.add(new Person("c", 21));
		list.add(new Person("a", 19));
		
		//这里x,y是指集合中的元素
		Collections.sort(list,(x,y)->y.compareTo(x));
		System.out.println(list);
		}
}
class Person implements Comparable<Person>{
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Person() {
		// TODO Auto-generated constructor stub
	}
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
	
	@Override
	public int compareTo(Person o) {
		// TODO Auto-generated method stub
		return o.getName().compareTo(this.name);
	}

toarray方法

集合和数组之间的相互转换:

特点:

 数组转成集合,本质上依然是一个数组,长度是不可变的

集合与数组所具备的方法是不一样的,如对于数组而言,就没有判断内部包含哪个元素·

list.toArray();

2.Arrays

toString()方法:

 如果直接输出arr就会显示地址,但是调用arrays.toString()的方法,就会将数组原封不动的打印出来

aslist方法的好处:将数组转换为集合,数组方法比较少,集合方法比较多

sort方法:

之前在学java的时候我们学到过冒泡排序,代码量比较多,还要写几个元素之间的比较代码,但是在这里我们直接调用arrays中的sort方法进行冒泡排序能够方便很多


版权声明:本文为m0_67477525原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。