一.Grouper
import java.util.List;
/**
* User: Zhong Gang
*/
public interface Grouper<K, E> {
GroupResults group();
K key(E element);
}
二.AbstractGrouper
import java.util.ArrayList;
import java.util.List;
/**
* User: Zhong Gang
*/
public abstract class AbstractGrouper<K, E> implements Grouper<K, E> {
private List<E> elements = new ArrayList<E>();
public AbstractGrouper(List<E> elements) {
this.elements = elements;
}
@Override
public GroupResults group() {
GroupResults results = new GroupResults();
for (E element : elements) {
K key = key(element);
GroupResult groupResult = results.getGroupResult(key);
if (groupResult == null) {
GroupResult groupedResult = new GroupResult(key);
groupedResult.add(element);
results.add(groupedResult);
} else {
groupResult.add(element);
}
}
return results;
}
public abstract K key(E element);
}
三.GroupResults
import java.util.ArrayList;
import java.util.List;
/**
* User: Zhong Gang
*/
public class GroupResults<K> {
private List<GroupResult> groupResults = new ArrayList<GroupResult>();
public List<GroupResult> getGroupResults() {
return groupResults;
}
public boolean isEmpty() {
return groupResults.isEmpty();
}
public void add(GroupResult groupedResult) {
groupResults.add(groupedResult);
}
public GroupResult getGroupResult(K key) {
for (GroupResult groupResult : groupResults) {
if (key.equals(groupResult.getKey())) {
return groupResult;
}
}
return null;
}
}
四.GroupResult
import java.util.ArrayList;
import java.util.List;
/**
* User: Zhong Gang
*/
public class GroupResult<K, E> {
private K key;
private List<E> results = new ArrayList<E>();
public GroupResult(K key) {
this.key = key;
}
public K getKey() {
return key;
}
public List<E> getResults() {
return results;
}
public void add(E element) {
results.add(element);
}
}
运用以上代码可对除Java中的基本类型除外的任意类型进行关键字分组,核心代码为AbstractGrouper中的group方法,该方法实现了针对设置的关键字进行分组的逻辑,分组结果为GroupResult,针对每一个不同的关键字有不同的List,最终结果就是GroupResults,里面包含了分组后的List,每一个元素就是GroupResult,如有不妥之处,请批评指正。
分享到:
相关推荐
《YD-T 1215-2006 TDMA数字蜂窝移动通信网通用分组无线业务(GPRS)设备测试方法:移动台》是针对TDMA(时分多址)数字蜂窝移动通信网络中的GPRS(General Packet Radio Service,通用分组无线服务)设备,尤其是...
YD-T 1214-2006 900 1800MHz TDMA数字蜂窝移动通信网通用分组无线业务(GPRS)设备技术要求:移动台
移动通信网通用分组无线业务(GPRS)设备测试方法 900 1800MHz TDMA数字蜂窝移动通信网通用分组无线业务(GPRS)设备测试方法 移动台.pdf
标题中的“行业分类-设备装置-服务通用分组无线业务支持节点向移动台发送信息的方法”揭示了这个压缩包文件内容的核心,它涉及到的是通信技术领域,特别是移动通信中的服务通用分组无线业务(GPRS,General Packet ...
在IT行业中,服务通用分组无线业务(GPRS,General Packet Radio Service)是2G移动通信系统的一个重要组成部分,它提供了比传统GSM系统更高的数据传输速率,为移动用户提供无线上网和其他数据服务。本话题将围绕...
在IT行业中,通用分组无线业务(GPRS,General Packet Radio Service)是一种增强型的数据通信技术,它是在现有的GSM网络基础上发展起来的。GPRS主要用于提供高速数据传输,为移动用户提供了持续在线的能力,而不再...
标题中的“行业分类-设备装置-服务通用分组无线业务支持节点池内转移用户终端的方法”揭示了这个压缩包文件内容的核心,它涉及到的是通信领域中的一个特定技术问题,即如何在服务通用分组无线业务(GPRS)的环境中,...
在无线通信领域,服务通用分组无线业务(GPRS,General Packet Radio Service)是一种移动数据通信技术,它是2G和2.5G网络中的数据增强服务。GPRS为用户提供了一种持续在线、按数据量计费的数据传输方式,极大地提高...
《网络游戏在通用分组无线业务网络系统中的应用与技术解析》 随着移动通信技术的快速发展,通用分组无线业务(GPRS,General Packet Radio Service)网络系统已经成为了网络游戏的重要载体,为用户提供了随时随地的...
"基于嵌入式Linux的通用分组无线业务自动抄表系统.pdf" 本文旨在介绍基于嵌入式Linux的通用分组无线业务自动抄表系统,旨在解决电力自动抄表系统的技术瓶颈。该系统采用嵌入式Linux操作系统,结合高性能的32位CPU...
《网络游戏-基于通用分组无线业务网络的无线数据传送终端》这一主题主要涵盖了网络游戏在无线通信领域的应用,特别是通过通用分组无线业务(GPRS)网络进行数据传输的技术细节。以下是对这一主题的详尽解析: 一、...
《电子功用-用于实时增强型通用分组无线电业务的链路自适应》是关于现代通信技术中的一个重要领域,主要探讨如何在实时增强型通用分组无线电业务(EGPRS)中实现高效的链路自适应策略。这份行业资料深入解析了这项...
在现代通信技术中,服务通用分组无线业务(GPRS,General Packet Radio Service)是一种基于GSM网络的数据传输技术,它允许连续的数据传输,提高了移动通信的效率和速度。GPRS支持节点(SGSN,Serving GPRS Support ...
### RFC2473(中文)IPv6标准中的通用分组隧道化 #### 摘要及背景 本文档详细介绍了IPv6分组隧道化的通用模型与机制,并且明确指出这些模型与机制同样适用于诸如AppleTalk、IPX、CLNP等其他协议分组的封装。该文档...
《电信设备-实现维护信息发送的通用分组无线服务业务支持点及方法》这份资料主要聚焦于电信行业中GPRS(General Packet Radio Service)业务在设备维护中的应用与实施策略。GPRS是一种移动通信技术,它允许在GSM网络...
标题中的“行业分类-设备装置-在网关通用分组无线业务支持节点上按内容计费的方法”揭示了本文档将探讨的是通信行业的设备装置,特别是与通用分组无线业务(GPRS)网关相关的内容计费技术。GPRS是一种移动通信技术,...
该文档主要介绍了一种基于Linux操作系统和通用分组无线业务(GPRS)的心电无线监护系统的设计。这种监护系统能够实时监测心电图(ECG),并在检测到异常时通过GPRS自动发送短信报警,主要用于远程健康监护和临床康复...
而通用分组无线服务(GPRS)是移动通信系统中的一种数据传输技术,它为网络游戏在无线网络中的运行提供了可能。本文将深入探讨GPRS技术在网络游戏中的应用,以及其在无线数据传输中的优势和挑战。 GPRS是第二代(2G...