把一堆数据整理出来,根据value分类:
对象实体类
public class TestObj {
private String title ;
private String value;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
伪Map类:
import java.util.List;
public class Wmap {
private String key;
private List<TestObj> value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public List<TestObj> getValue() {
return value;
}
public void setValue(List<TestObj> value) {
this.value = value;
}
}
测试类:
import java.util.ArrayList;
import java.util.List;
public class Distinct {
public static void main(String[] args) {
// ------------------------------------------- 准备数据
TestObj tobj1 = new TestObj();
tobj1.setTitle("tttt");
tobj1.setValue("1");
TestObj tobj2 = new TestObj();
tobj2.setTitle("qqq");
tobj2.setValue("2");
TestObj tobj3 = new TestObj();
tobj3.setTitle("www");
tobj3.setValue("3");
List<TestObj> lo = new ArrayList<TestObj>();
lo.add(tobj1);
lo.add(tobj1);
lo.add(tobj1);
lo.add(tobj2);
lo.add(tobj2);
lo.add(tobj3);
// ------------------------------------------- 挑出value不同的对象
List<TestObj> lo2 = lo;
List<TestObj> lod = new ArrayList<TestObj>();
lod.add(lo2.get(0));
for (int a = 0; a < lo2.size(); a++) {
for (int b = 0, c = 0; b < lod.size(); b++) {
if (!lo2.get(a).getValue().equals(lod.get(b).getValue())) {
c++;
}
if (c == lod.size()) {
lod.add(lo2.get(a));
break;
}
}
}
System.out.println(lod.size());
// ------------------------------------------统一放进一个伪Map中,key是不同的值,value是list对象集合
List<Wmap> lm = new ArrayList<Wmap>();
// 初始化MAP
for (int d = 0; d < lod.size(); d++) {
Wmap wmap = new Wmap();
wmap.setKey(lod.get(d).getValue());
wmap.setValue(new ArrayList<TestObj>());
lm.add(wmap);
}
for (int e = 0; e < lod.size(); e++) {
for (int f = 0; f < lo2.size(); f++) {
if (lo2.get(f).getValue().equals(lod.get(e).getValue())) {
for(int g = 0 ; g <lm.size();g++ ){
if(lo2.get(f).getValue().equals(lm.get(g).getKey())){
lm.get(g).getValue().add(lo2.get(f));
}
}
}
}
}
System.out.println(lm);
}
}
感觉这个就是像把数据变成树,用不同的value变成节点。
写完之后,感觉这个太繁琐,感觉可以优化,直接拿出value进行比较动态生成,不用这么繁琐。。
分享到:
相关推荐
关于易语言操作word读写或者向word中插入图片的实现,经大量搜索贴子,发现基本思路是明白了(用com对象操作),但是例子代码太少,同时有的代码写法不够严谨或者使用模块等,导致实现效果不理想,也不容易理解.因此开贴,给...
《易语言源码COM对象操作支持库》是一个针对易语言编程环境的扩展库,它提供了对COM(Component Object Model)对象的操作支持。COM是微软的一种软件接口技术,用于构建组件和实现跨进程通信,广泛应用于Windows系统...
易语言OLEDispatch.fne支持库中文名为易语言COM对象操作支持库,本易语言支持库是用来操作COM对象型。易语言OLEDispatch.fne支持库为一般支持库,需要易系统3.0版本的支持,需要系统核心支持库3.8版本的支持,提供了...
在进行Excel对象操作时,可能会遇到各种错误,如文件不存在、权限问题等。因此,应使用“错误处理”命令进行错误捕获和处理,确保程序的健壮性。 九、示例代码 以下是一个简单的易语言操作Excel的例子: ```易语言 ...
易语言EXCEL表格对象操作类2.3模块源码,EXCEL表格对象操作类2.3模块,test,test2,test3,到变体,RGB,取分隔串内容,cell,cells,列名转数字,数字转列名,取Application,取Creator,取Parent,取Parent变体,取自动缩进,置...
易语言源码易语言EXCEL表格对象操作类2.3模块源码.rar 易语言源码易语言EXCEL表格对象操作类2.3模块源码.rar 易语言源码易语言EXCEL表格对象操作类2.3模块源码.rar 易语言源码易语言EXCEL表格对象操作类2.3模块...
根据提供的文件信息,本文将详细解释与“ADO对象操作ACCESS代码”相关的知识点,包括ADO对象的基本概念、如何使用ADO连接Access数据库以及执行SQL查询和非查询操作。 ### ADO(ActiveX Data Objects)简介 ADO是一...
在易语言中,对象操作是其核心概念之一,它允许开发者通过面向对象的方式处理程序中的各种元素。本篇文章将深入探讨易语言对象操作文件夹的相关知识点。 1. **对象与类** 在易语言中,对象是类的实例。类定义了...
EXCEL VBA 中的 IE 对象操作 在 EXCEL VBA 中,我们可以使用 IE 对象来操作网页,实现网页之间的通讯和控制。下面我们将详细介绍如何使用 IE 对象在 EXCEL VBA 中实现网页操作。 创建 IE 对象 首先,我们需要创建...
本篇内容将围绕“VB程序实例-调用COM对象操作数据库.zip”这一压缩包文件展开,详细分析其中可能包含的知识点,帮助有兴趣深入学习VB以及数据库操作的读者更好地理解内容。 首先,Visual Basic作为一种面向对象的...
面向对象操作架构下的LabVIEW模拟树莓派可视化编程:程序简洁、框架强大,助力大型项目开发与维护,完整源代码与进阶编程指南,Labview用面向对象操作者架构实现的模拟树莓派可视化编程,程序简洁,框架适合大型项目...
易语言对象操作WINDOWS防火墙源码,对象操作WINDOWS防火墙,取防火墙状态,切换状态,增加到例外列表
"LabVIEW面向对象编程实践:实现树莓派可视化模拟,助力大型项目开发与维护——完整源代码与进阶指南",Labview用面向对象操作者架构实现的模拟树莓派可视化编程,程序简洁,框架适合大型项目开发和维护,完整源代码...
易语言COM对象操作XML模块源码,COM对象操作XML模块,test,取根节点名,取父节点名,导入,导入XML,取子节点数,取节点名,枚举子节点名,枚举属性名值,删除节点,删除属性,导出到文件,取XML源码,取XML文本,取XML路径,插入...
易语言源码易语言对象操作文件夹源码.rar 易语言源码易语言对象操作文件夹源码.rar 易语言源码易语言对象操作文件夹源码.rar 易语言源码易语言对象操作文件夹源码.rar 易语言源码易语言对象操作文件夹源码.rar ...
易语言源码易语言对象操作WINDOWS防火墙源码.rar 易语言源码易语言对象操作WINDOWS防火墙源码.rar 易语言源码易语言对象操作WINDOWS防火墙源码.rar 易语言源码易语言对象操作WINDOWS防火墙源码.rar 易语言源码...