Map

1、集合框架Map
1.增加

put(K key, V value) 

putAll(Map<? extends K,? extends V> m) 

2.删除


clear() 

remove(Object key) 

`3.判断

containsValue(Object value) 

isEmpty() 

4,获取

t(Object key)

size()

values()  

``

`
下面有一个刷主播排名的案例
如下代码

public class MepDemo {
public static void main(String[] args) {
 Map map = new HashMap<>();
 map.put("zs", 16);
 map.put("ww", 20);
 map.put("ls", 24);
 map.put("zl", 13);
 map.put("tq", 42);
 map.put("wmz", 34);
 Object old = map.put("zl", 23);
 System.out.println("zl="+old);
 System.out.println(map);
}

结果
在这里插入图片描述
3、entrySet

4、keySet
map集合是不继承collection接口的,这样她是没有迭代器的方法的,如下代码

public class MepDemo {
    public static void main(String[] args) {
  Map<Object, Object> map = new HashMap<>();
  map.put("zs", 16);
  map.put("ww", 20);
  map.put("ls", 24);
  map.put("zl", 13);
  map.put("tq", 42);
  map.put("wmz", 34);
Object old = map.put("zl", 23);
		System.out.println("zl="+old);
		System.out.println(map);
		Set<Entry<Object, Object>> entrySet = map.entrySet();
//  for (Entry<Object, Object> entry : entrySet) {
//    System.out.println("key:"+entry.getKey()+",value:"+entry.getValue());
//  }
Set<Object> keySet = map.keySet();
		for (Object key : keySet) {
		System.out.println("key:"+key+",value:"+map.get(key));
		}
	}
}

结果
在这里插入图片描述这个代码最后有一个结论
Hashtable:底层是哈希表数据结构,不可以存入null键null值
HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的。将 Hashtable替代;jdk1.2,效率高
TreeMap:底层是二叉树数据结构,线程不同步,可以用给Map集合中的键进行排序

二、 集合框架Map应用
如下代码
第一个案例:
1.将学生作为键,地址作为值进行存储,名字年龄相同被认定为同一个人,最后然后打印
2.按年龄进行排顺序
3.按姓名进行排序

第一个案例
public class HashMapDemo {
    public static void main(String[] args) {
    HashMap map = new HashMap<>();
    	TreeMap map = new TreeMap<>(new StuNameComp());
    	map.put(new Student("zs", 25), "beijing");
       map.put(new Student("ls", 35), "shanghai");
       map.put(new Student("ww", 28), "guangzhou");
    
       map.put(new Student("ls", 25), "changsha");
       map.put(new Student("ls", 25), "hangzhou");
 keySet = map.keySet();
		for (Object key : keySet) {
			System.out.println(key);
		}
	}
}
class StuNameComp implements Comparator<Student>{
@Override
	public int compare(Student o1, Student o2) {
int num = o1.getName().compareTo(o2.getName());
if(num == 0) {
                    return o1.getAge() - o2.getAge();
		}
                   return num;
}
	
}
class Student implements Comparable<Student>{
	private String name;
	private int age;
public Student() {}

	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = 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;
	}
@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
@Override
	public int hashCode() {
		return this.name.hashCode() + this.age;
	}
@Override
 public boolean equals(Object obj) {
  Student stu = (Student) obj;
  return this.name.equals(stu.name) && this.age == stu.age;
  @Override
 public int compareTo(Student o) {
  int num = this.age - o.age;
  if(num==0) {
   this.name.compareTo(o.name);
  }
  return num;
 }
 

结果
在这里插入图片描述
应用二:第一个知识点统计字符串中字符出现的次数
dhshsjshhddkdkdjdhdhd
* 1.分析结果得到结论,我们需要将a-z当作键,将次数当成value也就是我们要创建map值
* 2、需要将待处理的字符串转成字符数组,以便于获取map集合的key
* 3、如果该字符(a)第一出现的时候,就给a对应key映射值value赋值为1
* 4、打印出a(4)b(9)…z(7)格式串
* 意味着需要对key进行排序
* 如下代码

package web_map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
1.统计字符串出现的顺序
       * dhshsjshhddkdkdjdhdhd
       * 1.分析结果得到结论,我们需要将a-z当作键,将次数当成value也就是我们要创建map值
       * 2、需要将待处理的字符串转成字符数组,以便于获取map集合的key
       *    3、如果该字符(a)第一出现的时候,就给a对应key映射值value赋值为1
       *    4、打印出a(4)b(9)...z(7)格式串
       *    意味着需要对key进行排序
       * @author yyj mmm
       * public class TreeMapDemo {
           public static void main(String[] args) {
   String str="sdlfjlsjflLjlsjlfsldjfslfljwlfejwlejfl";
   Map<Character, Integer> map = new HashMap<>();
   char[] charArray = str.toCharArray();
   for (char c : charArray) {
    Integer obj=map.get(c);
    if(obj==null) {
     //之前没有出现过,这是第一次出现
       map.put(c, 1);
    }else{
        //之前这个字符串已经出现过
     map.put(c, ++obj);
      
}
   }
  }
}
 String,StringBuffer,StringBuilder三者的区别?
    String a= new String("abc");
    String b = "abc";
    a+="de";
 StringBuffer sb1 = new StringBuffer("abc");
     StringBuilder sb2 = new StringBuilder("abc");
    sb1.append("de");
     sb2.append("de");
`StringBuffer,StringBuilder的区别?
      StringBuffer  同步    安全
      StringBuilder 異步    不安全 
      StringBuilder sb = new StringBuilder();
  Set<Entry<Character, Integer>> entrySet = map.entrySet();
  for (Entry<Character, Integer> entry : entrySet) {
   sb.append(entry.getKey()+"("+entry.getValue()+")");
  }
  System.out.println(sb);
 }
 

在这里插入图片描述

HashMap 不排序
// TreeMap 排序
// 注意:大写的在所有的小写的前面

集合框架工具类有 Collections、Arrays

public class UtilDemo {
        public static void main(String[] args) {
         int arr[] = {32,453,654,757};
//         [I@7852e922
          System.out.println(arr);
//          二分搜索法/冒泡排序/选择排序/快速排序/希尔排序
          System.out.println(Arrays.toString(arr));
  }  
}

collection的反转

public class TreeSetDemo {
          public static void main(String[] args) {
//   TreeSet<Object> set=new TreeSet<>();
//   TreeSet<Person> set=new TreeSet<>(new personAgeMoneyComp());
//           TreeSet<Person> set=new TreeSet<>(new  personMoneyAgeComp());
           TreeSet<Person> set=new TreeSet<>(Collections.reverseOrder(new personAgeMoneyComp()));
   set.add(new Person("zhang", 19, 1200));
         set.add(new Person("zhang", 10, 1205));
          set.add(new Person("li", 22, 1900));
         set.add(new Person("hei", 90, 9000));
        set.add(new Person("zhangsanfon", 90, 1000));
    set.add(new Person("nan", 23, 1230));
//   System.out.println(set);
    Iterator it=set.iterator();
    while(it.hasNext()) {
     System.out.println(it.next());
    }
  }
}
             
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190707210301214.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM1NTM0Mw==,size_16,color_FFFFFF,t_70)








  
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值