IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 实用工具类---给List数据加索引 -> 正文阅读

[数据结构与算法]实用工具类---给List数据加索引

继承之前的一篇:?从非诚勿扰看数据索引,优化代码小妙招

直接将这个实用小算法封装成一个工具类。

public?class?IndexUtil {



/**

?* List转Map

?* @param list 原始列表数据(任何实现List接口的数据)

?* @param keyExtractor (抽取Key值的方法)

?* @return 加了索引的数据->Map

?*/

public?static <K,V> Map<K,V> fromList(List<V> list,Function<V,K> keyExtractor){



????????Map<K,V> result = new?HashMap<K, V>();

????????for?(Iterator<V> iterator = list.iterator(); iterator.hasNext();) {

????????????????V v = (V) iterator.next();

????????????????K extractorKey = keyExtractor.extractor(v);

????????????????if(extractorKey == null) {

????????????????????????continue;

????????????????}

????????result.put(extractorKey, v);

}



????????return?result;

}



public?static void?main(String[] args) {

????????User?user?= new?User();

????????user.setUserName("A");

????????user.setPassword("1233544");



????????List<User> userList = new?ArrayList<User>();

????????userList.add(user);

????????user?= new?User();

????????user.setUserName("B");

????????user.setPassword("3r43");

????????userList.add(user);

????????user?= new?User();

????????user.setUserName("C");

????????user.setPassword("t5y6y");

????????userList.add(user);

????????Map<String, User> fromList = IndexUtil.fromList(userList, new?Function<User, String>() {

????????????????@Override

????????????????public?String extractor(User?v) {

????????????????????????return?v.getUserName();

????????????????}

????????});



????????????????System.out.println(fromList.get("C").getPassword());

????????}



}

Function是一个抽取Key值的接口,因为JDK1.6没有lamda表达式,所以只能用内部类了。

public?interface?Function<V,K> {

????????K extractor(V v);

}

亲测有效,代码中这种情况还是挺多的,用工具类可以省去很多重复代码。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:22:23  更:2022-05-07 11:24:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:23:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码