-
2019-05-07 17:26:38
需求背景:页面文本域输入数据进行批量处理得时候,既要去重又要保留文本域中数据的顺序
解决方法:
1.新建一个工具类SetList
package util; import java.util.LinkedList; public class SetList<T> extends LinkedList<T> { private static final long serialVersionUID = 3612971767507405567L; @Override public boolean add(T object){ if(size() == 0){ return super.add(object); }else{ int count = 0; for (T t : this){ if(t.equals(object)){ count ++; break; } } if (count == 0){ return super.add(object); }else{ return false; } } } }
2.去重并保留原理得顺序
//去重并保留原理得顺序 public String[] distinctByArr(String[] arr){ if(arr != null && arr.length > 0){ SetList<String> setList = new SetList<>(); for(String str : arr){ setList.add(str); } String[] arr_new = new String[setList.size()]; for(int i=0;i<setList.size(); i++){ arr_new[i] = setList.get(i); } return arr_new; }else{ return arr; } }
说明:这里只是将项目中的代码copy过来做个笔记,当时为了快速实现功能需求,SetList是在网上看的,后面仔细看了一下内容,用list一样的可以实现;至于为什么要用linkList,欢迎留言告知
更多相关内容 -
有序且不重复的集合
2018-01-10 18:47:08import java.util.LinkedList; public class SetList extends LinkedList{ ... 自定义一个不重复且有序的集合 */ private static final long serialVersionUID = 3612971767507405567L; @Override puimport java.util.LinkedList;
public class SetList<T> extends LinkedList<T>{
/**
* 自定义一个不重复且有序的集合
*/
private static final long serialVersionUID = 3612971767507405567L;
@Override
public boolean add(T object) {
if (size() == 0) {
return super.add(object);
} else {
int count = 0;
for (T t : this) {
if (t.equals(object)) {
count++;
break;
}
}
if (count == 0) {
return super.add(object);
} else {
return false;
}
}
}
}
---------------------------------------------------------------------------------------------------------测试类----------------------------------------------------------------------------------------------
public class ListSet {
public static void main(String[] args) {
SetList<String> s = new SetList<String>();
s.add("aaa");
s.add("xxx");
s.add("aaa");
for(String a : s){
System.out.println(a);
}
}
}
输出的内容为 aaa xxx
-
Java中自定义有序不重复的集合——SetList
2021-02-13 01:12:14由于课程设计的需要,笔者需要将...Set接口是无序不重复的,不能用下标定位数据结合他们之间的优缺点和数据量,在不考虑性能的情况下,笔者写了有序不重复的集合总体是基于LinkedList实现的,重写其add方法List为空...由于课程设计的需要,笔者需要将数据库中的某个表的数据拿出来处理
例如楼层和建筑表,有外键限制
一开始是使用List保存的,但实际操作中发现,从表中取出来楼层数据中的建筑有些是重复的
List接口实现的存储是有序可重复的,Set接口是无序不重复的,不能用下标定位数据
结合他们之间的优缺点和数据量,在不考虑性能的情况下,笔者写了有序不重复的集合
总体是基于LinkedList实现的,重写其add方法
List为空,就直接添加对象,不为空,就遍历List,判断其中中是否有与待插入的对象是否相同
SetList类如下
public class SetList extends LinkedList {
private static final long serialVersionUID = 1434324234L;
@Override
public boolean add(T object) {
if (size() == 0) {
return super.add(object);
} else {
int count = 0;
for (T t : this) {
if (t.equals(object)) {
count++;
break;
}
}
if (count == 0) {
return super.add(object);
} else {
return false;
}
}
}
}
Person类
public class Person {
private int id, age;
private String name, sex;
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (id != other.id)
return false;
return true;
}
@Override
public String toString() {
return "Person [id=" + id + ", age=" + age + ", name=" + name
+ ", sex=" + sex + "]";
}
//省略构造器、get和set等
}
调用
@Test
public void test(){
List list = new SetList<>();
list.add(new Person(1, 20, "小明", "男"));
list.add(new Person(2, 20, "小红", "女"));
list.add(new Person(2, 20, "小花", "女"));
list.add(new Person(4, 20, "小辉", "未知"));
System.out.println(list);
}
输出结果
[Person [id=1, age=20, name=小明, sex=男], Person [id=2, age=20, name=小红, sex=女], Person [id=4, age=20, name=小辉, sex=未知]]
-
集合中的有序无序,可重复不可重复
2020-04-29 10:49:36总结:除了set不可重复,其余均可重复;map中key不可重复,value可重复 除了list和tree有序,其余均无序 转载:...
总结:除了set不可重复,其余均可重复;map中key不可重复,value可重复除了list和tree有序,其余均无序
-
Java集合怎么存放有序不重复的对象?
2020-03-27 14:29:04**如题,怎么存放一个对象集合,是有序的,集合中的对象也是不重复的额,最好可以高效一些。** -
java集合List,Set,Map怎么理解存储数据有序,无序以及可重复,不可重复
2022-04-01 17:08:35PS:本文中的“有序”指的是存储数据时输入顺序与数据输出顺序相等,“唯一”:指的是不重复 首先我们知道java集合有两个接口;一个是Collection,一个是Map; 其中Colection衍生出了两个子接口也就是平时我们... -
List集合(存放有序可重复队列)
2019-10-06 15:30:17//list集合是有序的可重复的 @Test public void listTest1(){ List list =new ArrayList(); //不指定索引直接添加在集合最后 list.add(11); list.add(" 111"); list.add('a'); //指定索引 list.add... -
java中简单介绍一个有序的,允许重复的集合 List
2021-02-12 09:52:19一下为Lsit的一些方法示例//List集合是有序的,允许重复的每个元素都有对应的索引,可以通过索引来访问元素//索引下标从0开始package List;import java.util.ArrayList;import java.util.List;public class ListTest... -
java-集合-set(不重复集合)知识分解——庖丁解牛版
2021-10-19 15:06:412、Set集合特点: 3、分类(实现子类): 4、所有已知实现类: 5、注意事项 6、所有方法 第二重境界:未尝见全牛也 HashSet 1、HashSet特点: 2、HashSet集合添加一个元素的过程: 3、代码演示 4、注意... -
【Scala入门】Scala中的List有序可重复集合:列表List基本使用
2019-09-20 11:32:08package ... import scala.collection.mutable.ListBuffer /** * List有序可重复集合:列表List基本使用 */ object ListDemo { def main(args: Array[String]): Unit = { // 创建空列表 ... -
集合{ }_set_元素不可重复
2018-11-29 02:12:42集和里面的元素是不可重复的 s = {1,2,3,4,5,6,6,3,3,2} print(s,type(s)) s1 = {1} print(s1,type(s1)) 运行: 如何定义一个空集合: s2 = {} #默认情况是dict,称为字典 print(s2,type(s2)) 运行: 定义一个... -
List是有序且重复的,Set是无序不重复的!
2019-04-29 11:04:38List是有序且重复的,Set是无序不重复的。这里说的顺序有两个概念,一是按添加的顺序排列,二是按自然顺序a-z排列。Set并不是无序的,传统说的Set...不保证元素添加的顺序,不保证元素自然的顺序,不可重复:HashSet... -
Java中的集合类——可重复集合List:ArrayList与LinkedList
2019-03-11 15:38:10package day04;... * 可重复集,并且有序。 * 特点是可以根据下标操作元素/。 * 常用的实现类: * ArrayList:使用数组实现,查询更快 * LinkedList:使用链表实现,增删更快。(首尾增删效果明显加快) *... -
javaSE LinkedList集合,元素有序可以重复,查询慢,增删快
2018-06-11 21:41:18Collection(集合):容器,用于存放对象(引用类型。... 查看Set(集):元素无序,不可重复 (没有索引)ArrayList(数组列表): 查询快,增删慢。 查看LinkedList(链表): 查询慢,增删快。HashSet(哈希表): 查询快,增删慢。L... -
sortedset:在Golang中实现的有序集合,在添加搜索删除时具有O(log(N))时间复杂度
2021-05-03 19:02:13Golang中的排序集 Sorted Set是一种数据结构,其灵感来自Redis。 它允许通过键或分数快速访问。 财产 类型 描述 key string 节点的标识符。 它在集合中必须是唯一的。... 可以重复。... 集合中的每个节点都与一... 您还可 -
Java Set( 不允许重复的集合)
2018-03-09 21:07:30HashSet: 防止重复使用HashSet的class必须implements Comparable();ArrayList<class> classList=new ArrayList<class>(); HashSet<class> classSet=new HashSet<... -
javaSE Set集合,元素无序不重复
2018-06-11 22:16:00Collection(集合):容器,用于存放对象(引用类型。... 查看Set(集):元素无序,不可重复 (没有索引)。 遍历只能用Iterator迭代器和增强for, 不能使用普通for遍历。ArrayList(数组列表): 查询快,增删慢。 查看LinkedLis... -
java ArrayList() 集合 添加元素 移除元素 排序 (有序可重复)
2018-04-02 21:10:34有序可重复 2.效率高3.查询快 4.异步(不安全) 不支持线程同步,线程不安全5.可变数组JDK是java的运行环境package test; import java.util.*; public class Test { public static void main(String args[]){ ... -
java什么集合的 元素不能重复的
2016-09-29 08:56:56java什么集合的 元素不能重复的 hdnfdhsd132 | 浏览 1999 次 2015-11-17 10:56 2015-11-17 11:10 最佳答案 Set 集合不允许重复的。 Set为接口,常用的实现类是HashSet 举个例子: Set ... -
zset(有序集合)
2019-09-16 14:57:42redis zset和set一样也是string类型元素的集合,且不允许重复的元素,可以添加nil(空) 不同的是每个元素都会关联一个double类型的分数。reids正是通过分数来为集合中的成员进行从小到大的排序 zset的成员是唯一的... -
javaSE List集合,有序(索引),可以存放重复元素
2018-06-11 18:16:25List(列表):元素有序,元素可以重复 (有索引)。 通过元素的equals()方法判断是否重复。ArrayList:https://blog.csdn.net/houyanhua1/article/details/80494916Demo.java:package cn.xxx.demo; import java.util.... -
插入有序可重复(三) -- LinkedList
2019-06-12 10:49:24一:概述 ...本文就针对LinkedList双向链表、结构修改、随机访问、Deque、迭代等几个方向深入探究一下这个集合 二:双向链表 简简单单普普通通的一个静态内部类搞定,通过维护一前prev、一后next... -
Redis有序集合(sorted set)使用
2021-02-12 18:37:05有序集合(sorted set)同时拥有“有序” 和 “集合”两种性质,集合性质保证有序集合只会包含各不相同的成员,而有序性质则保证了有序集合中的所有成员都会按照特定的顺序进行排列;在一般情况下,有序集合成员的大小... -
Java 集合体系详解——List体系有序集合
2016-07-26 17:04:48元素是有序的,元素可以重复,因为该集合体系有索引 List体系下由于Iterator在迭代时不能通过 集合对象的方法 操作 集合中的元素 ,因为会发生异常。 2 ArrayList存储对象的过程及应用 2.1)集合中存储的是... -
Java集合总结.txt
2022-06-03 23:47:40单个集合的学习路线:使用->做实验->画图->分析... 特点:无序的,且不可重复 HashSet: 数据结构:Hash表/Hash数组 运用:去重复 TreeSet: 数据结构:二叉树 运用:自然排序 Map --- Map接口 特 -
python中的四种集合数据类型(列表,元组,集合,字典)
2021-01-20 02:07:58元组(tuple):有序,不可更改,可以有重复的成员 集合(set):无序,无索引,没有重复的成员。 字典 (Dictionary):无序,可更改,有索引,没有重复的成员 列表[](list)(有序,可更改,可以有重复的成员) ... -
Java集合之Set集合
2020-10-11 12:25:20首先Set,是个接口,其存储的元素,是不允许重复的。 一旦有重复的元素出现,则后存储元素会将之前存储的元素进行覆盖. 并且Set集合存储的数据是无序的。 1.HashSet 此类实现 Set 接口,由哈希表(实际上是一个 ... -
python set有序吗
2021-01-13 19:20:25Python的set是一个无序且无重复元素的集合,概念上相当于数学上的无序集,数据结构上相当于dict的键。既然set是集合,则必然可以实现并、交、差、对称差等集合运算。set是一组无序排列的可哈希的值,因此可以用作...