一.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 1214-2006 900 1800MHz TDMA数字蜂窝移动通信网通用分组无线业务(GPRS)设备技术要求:移动台
移动通信网通用分组无线业务(GPRS)设备测试方法 900 1800MHz TDMA数字蜂窝移动通信网通用分组无线业务(GPRS)设备测试方法 移动台.pdf
行业分类-设备装置-服务通用分组无线业务支持节点控制资源分配的方法.zip
行业分类-设备装置-服务通用分组无线业务支持节点监控移动用户状态的方法.zip
行业分类-设备装置-服务通用分组无线业务支持节点对计费网关的管理方法.zip
行业分类-设备装置-服务通用分组无线业务支持节点中数据包的转发方法及装置.zip
行业分类-设备装置-服务通用分组无线业务支持节点向移动台发送信息的方法.zip
行业分类-设备装置-服务通用分组无线业务支持节点池内转移用户终端的方法.zip
网络游戏-通用分组无线业务网络系统.zip
国内GSM手机测试标准Y/D1215-2006
基于嵌入式Linux的通用分组无线业务自动抄表系统.pdf
网络游戏-通过通用分组无线服务无线网络传输数据.zip
基于Linux和通用分组无线业务的心电无线监护设计.pdf
行业资料-电子功用-用于实时增强型通用分组无线电业务的链路自适应
网络游戏-基于通用分组无线业务网络的无线数据传送终端.zip
电信设备-基于全球移动通信系统通用分组无线业务的调制解调器.zip
第13 卷: 通用分组无线业务是为掌握 GPRS 技术的高深知识的 GPRS 网络运营商而 准备的。 本卷介绍 ScreenOS 中的 GTP 功能,并演示如何在 Juniper Networks 安全设备上配 置 GTP 功能。其中包括以下章节:
通用分组无线服务技术(General Packet Radio Service)的简称,它是GSM移动电话用户可用的一种移动数据业务。GPRS可说是GSM的延续。GPRS和以往连续在频道传输的方式不同,是以封包(Packet)式来传输,因此使用者所...
电信设备-实现维护信息发送的通用分组无线服务业务支持点及方法.zip
YD-T 1215-2006 TDMA数字蜂窝移动通信网通用分组无线业务(GPRS)设备测试方法:移动台