集合框架(二)

本文详细介绍了Java集合框架中的Map接口,特别是HashMap类的使用,包括put、get、remove等核心方法。同时,对比了HashMap与Hashtable的区别,如线程安全性与null值处理。此外,讲解了泛型的概念及其在集合中的应用,以及Collections工具类的sort、max、min等实用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7/100发布文章 博文管理我的博客退出 Trash Temp java高级特性-集合框架(一) java高级特性-集合框架(一) java高级特性-集合框架(一) Java面向对象三大特性之一 多态 抽象和接口 集合框架(二) 数组 循环结构 循环结构 循环结构 循环结构 循环结构 异常(exception) 添加摘要 ## Map接口概述
Map(key-value 键值对 夫妻对 )
Map接口存储一组成对的键(key)——值(value)对象,提供key到value的映射,通过key来检索。Map接口中的key不要求有序,不允许重复。value同样不要求有序,但是允许重复,
Map接口的常用API
1.void put(Object key,Object value);存储键值对

2.Object get(Object key);根据键获取值(键十唯一)

3.int size();获取集合中的键值对数量

4.boolean containsKey(Object key);是否包含指定的键

5.boolean containsValue(Object value);是否包含指定的值

6.Set <Object>keySet();获取所有键的集合

7.collection<Object>values();获取所有值的集合

8.Object remove(Object key);根据键删除值 会返回被删除的值

9.boolean isEmpty();判断是否是空集合

10.void clear();清空集合内容;
Map接口中存储的数据都是键——值 对,例如一个身份证对应一个人,其中身份证号码就是key,与此对应的人就是value。

使用HashMap类动态存储数组

最常用的Map 实现类是HashMap,其优点是查询指定元素效率高。
例:

使用HashMap存储学生信息,根据英文名检索学生信息
1.导入HashMap包
2.创建HashMap对象
3.调用HashMap对象的put()方法,向几何中添加数据
4.输出学员个数
5.输出键集
6.判断是否存在Jack这个键,如果存在,则根据键获取相对应的值;
7.判断是否存在Rose这个键,如果存在,则根据键获取相应的值。
//创建学生对象
Student1 = new Student("李明","男");
Student2 = new Student("刘丽","女");
//创建保存“键——值对”的集合对象
Map students  = new HashMap();
//把英文名称与学员对象按照“键——值对”的方式存储在HashMap中
Students.put("Jack","student1");
Students.put("Rose","student2");
//输出学员个数
syso("已添加"+students.size()+"个学员信息");
//输出键集
syso("键集",+student.keySet());
String key ="Jack";
//判断是否存在”Jack“这个键,如果存在,则根据键获取相应的之值
if(students.containsKey(key)){
	Student student = (Student)students.get(key);
	syso("英文名为"+key+"的学员姓名:"+student.getName());

}
String key1 = "Rose";
//判断是否存在"Rose"如果存在,则删除此键——值对
if(students.containsKey(key1)){
	students.remove(key1;);
	syso("学员"+key1+"的信息已删除")
}

Map集合遍历

/**
 * 思路:
 *  获取键集合
 *  遍历键集合
 *  根据键获取对应值
 * @author Charles7c
 * 2019年4月18日 上午10:07:21
 */
 public class Demo1 {
 public static void main(String[] args) {
 Map<String, String> hashMap = new HashMap<>();
 hashMap.put("CN", "中国");
  hashMap.put("RU", "俄国");
  hashMap.put("UK", "英国");
   // 获取键集合
  Set<String> keySet = hashMap.keySet();
   // 遍历键集合[推荐]
  /*for (String key : keySet) {
   // 根据键获取值
   // keySet.get(key)
    String value = hashMap.get(key);
   System.out.println(key+" --> "+value);
    }*/

  // 迭代器遍历    
  Iterator<String> iterator = keySet.iterator();   while(iterator.hasNext()) {   
  String key = iterator.next();    
  String value = hashMap.get(key);  System.out.println(key+" --> "+value);  
   } 
  }
}

了解HashMap和Hashtable的区别

相同点:
HashMap和Hashtable都是Map接口的实现,都可以实现键值对存储。
不同点:

  1. HashMap键值存储都可以为Null,如果键为null则只能存储一次。Hashtable键值存储都不允许为Null。
  2. HashMap是线程不安全的,效率高。Hashtable是线程安全的,效率低。

掌握泛型的使用

泛型的定义:
将对象的类型作为参数,指定到其他类或者方法上,从而保证类型的转换的安全性和稳定性,这就是泛型。泛型的本质就是参数化类型。
格式:
类1或接口<类型实参>对象 = new 类2<类型实参>();
例:

ArrayList<String>list = new ArrayList<Stirng>();

1.在集合中用泛型声明元素数据类型 泛型必须是引用数据类型(包装类型)

public class Demo2 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
News news1 = new News(1, "震惊!巴黎圣母院失火!", "xxx");
  News news2 = new News(2, "震惊!LOL玩家和DOTA玩家竟然在众人面前互斥对方算什么男人!", "xxxx");
   News news2 = new News(2, "震惊!LOL玩家和DOTA玩家竟然在众人面前互斥对方算什么男人!", "xxxx");
    News news3 = new News(3, "是中国人必须转!不转不是中国人!", "xxxx");
  list.add(news1);
  list.add(news2);
  list.add(news3);
   // 没有泛型必须使用强转  不安全
   for (Object object : list) {
   if(object instanceof News) {
    News news = (News)object;
     System.out.println(news.getAuthor());
     }
    }
   }
  }   

利用泛型将程序变得更加易扩展(通过泛型占位符来进行扩展)

public class Test<T> {
private String field1;
 private String field2;
 // 不确定是什么类型的
 private T field3;
} 
// 不确定是什么类型的
 private T field3;

掌握Collections工具类的常用操作

Collections
void sort(集合); 对集合进行升序排序
int max(集合); 获取集合中的最大值
int min(集合); 获取集合中的最小值
int binarySearch(集合,要查找的元素); 查找指定的键
void shuffle(集合); 打乱集合元素顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值