-
2022-03-23 10:28:09
new一个list和一个set,先将数据插入到set中,如果插入成功在插入到list中:
if(set.add(data)){ list.add(data); }
最后返回list
更多相关内容 -
java实现有序不重复集合
2020-07-27 18:25:42需求背景:数据进行批量处理...import java.util.LinkedList; public class SetList<T> extends LinkedList<T> { private static final long serialVersionUID = 3612971767507405567L; @Override需求背景:数据进行批量处理得时候,既要去重又要保留文本域中数据的顺序
解决方法:
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; } }
-
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=未知]]
-
一眼看懂Java中的集合
2020-05-13 16:12:05此篇文章是学习Java中的集合时自己总结的笔记,主要记录了集合的底层原理、List、Set、Queue等集合的特点、集合的实现类的特点以及各个实现类底层是原理。 -
java中简单介绍一个有序的,允许重复的集合 List
2021-02-12 09:52:19一下为Lsit的一些方法示例//List集合是有序的,允许重复的每个元素都有对应的索引,可以通过索引来访问元素//索引下标从0开始package List;import java.util.ArrayList;import java.util.List;public class ListTest...一下为Lsit的一些方法示例//List集合是有序的,允许重复的每个元素都有对应的索引,可以通过索引来访问元素
//索引下标从0开始
package List;
import java.util.ArrayList;
import java.util.List;
public class ListTest {
public static void main(String args[]){
List list = new ArrayList();
list.add(new String("java1"));
list.add(new String("java2"));
list.add(new String("java3"));
list.add(1, new String("java4"));
// 将下标为1(也就是第二个元素)置为 java4,本来的元素从第二个元素开始全部往后移动
// 一位
for(int i=0 ;i
System.out.print(list.get(i) + ",");
// 通过get(i)(i为下标)可以访问list指定位置的元素
}
System.out.println();
list.remove(2);
// 删除指定下标的元素(下标为2即时第三个元素)
System.out.println(list);
System.out.println(list.indexOf(new String("java1")) );
// 注意,这里indexOf()会返回1,说明indexOf()方法不是通过 == 来匹配元素
// 而是通过equals()方法来匹配的
list.set(1, new String("java5"));
// 设置特定下标为特定元素
System.out.println(list);
System.out.println(list.subList(1,2));
// 包头不包尾
}
}
//输出结果
// java1,java4,java2,java3,
// [java1, java4, java3]
// 0
// [java1, java5, java3]
// [java5]
相关文章:
相关视频:
-
Java集合怎么存放有序不重复的对象?
2020-03-27 14:29:04**如题,怎么存放一个对象集合,是有序的,集合中的对象也是不重复的额,最好可以高效一些。** -
java-集合-set(不重复集合)知识分解——庖丁解牛版
2021-10-19 15:06:412、Set集合特点: 3、分类(实现子类): 4、所有已知实现类: 5、注意事项 6、所有方法 第二重境界:未尝见全牛也 HashSet 1、HashSet特点: 2、HashSet集合添加一个元素的过程: 3、代码演示 4、注意... -
java集合List,Set,Map怎么理解存储数据有序,无序以及可重复,不可重复
2022-04-01 17:08:35PS:本文中的“有序”指的是存储数据时输入顺序与数据输出顺序相等,“唯一”:指的是不重复 首先我们知道java集合有两个接口;一个是Collection,一个是Map; 其中Colection衍生出了两个子接口也就是平时我们... -
Java之有序集合&hashMap
2022-03-25 15:56:55文章目录前言TreeSet基础数据类型复杂数据类型小技巧TreeMap基础类型复合类型演示代码(完整) 前言 ...并且查找的时间复杂度大概在 logn ,还是相当不错的,在一些实在是想不到的题目里面合理地使用 -
java中的不重复的集合有哪些
2021-02-28 18:46:10下面我们来看一下java中不重复的集合。Set:典型实现 HashSet()是一个无序,不可重复的集合1、Set hashSet = new HashSet();①、HashSet:不能保证元素的顺序;不可重复;不是线程安全的;集合元素可以为 NULL;②、其... -
Java集合
2021-06-13 11:49:12Java的集合大致上可分为:Set,List和Map三种体系,其中Set代表无序,不可重复的集合;List代表有序,重复的集合,而Map则代表具有映射关系的集合。Queue体系集合,代表一种队列集合实现。 Java集合就像是一个容器,... -
有序且不重复的集合
2018-01-10 18:47:08import java.util.LinkedList; public class SetList extends LinkedList{ ... 自定义一个不重复且有序的集合 */ private static final long serialVersionUID = 3612971767507405567L; @Override pu -
LinkedHashSet集合让元素有序不重复
2022-02-16 10:00:34import java.util.LinkedHashSet; public class Linkedhashset { public static void main(String[] args) { // TODO 自动生成的方法存根 LinkedHashSet<String> s1 = new LinkedHashSet<>(); ... -
java的集合类型介绍
2021-03-17 10:53:112020-06-29 11:09:31来源:亿速云阅读:94作者:Leah本篇文章给大家分享的是有关java的集合类型介绍,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看... -
JAVA集合类汇总
2021-03-22 14:35:571、List(有序、可重复)List里存放的对象是...2、Set(无序、不能重复)Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。3、Map(键值对、键唯一、值不唯一)Map集合... -
Java中的集合
2021-04-23 13:48:11List:有序,重复。Map:具有映射关系(键值对)。注意:1. 集合与数组有什么不一样,集合只能保存对象,而数组可以保存对象也可以保存基本类型值。(Java 5以上自动装箱,所以这边看似好像集合可以里可以存放基本类型,... -
Java集合:Collection-数组集合区别、集合特点、常用方法、遍历-List有序集合-Set无序集合-Map双列集合
2021-08-30 17:23:43文章目录1 Collection1.1 数组和集合的区别1.2 集合的特点1.3 Collection的方法1.4 遍历2 List有序集合-ArrayList和LinkedList2.1 特有方法2.2 ArrayList2.3 LinkedList3 Set无序唯一集合LinkedHashSet-TreeSet3.1 ... -
Java有序列表
2022-03-02 17:55:51适合于高并发场景,且列表不重复的情况下使用 TreeSet 基于红黑树的set集合 特性: * 非线程安全 * 唯一性 适合于非并发场景,且列表不重复的情况下使用 PriorityBlockingQueue 基于完全二叉树的队列... -
java list有序还是无序_java的集合框架
2021-08-02 11:20:35前言 使用java编程语言的开发人员,在日常开发过程中经常会使用到java的一些集合类,不过这些集合类太多,很多人对它们的特点和使用场景不是特别的了解,通过此文给大家总结一下这...1、List( 有序、可重复) ArrayL -
JAVA 链表的有序集合
2018-04-25 09:42:47链表的有序集合Time Limit: 1000 ms Memory Limit: 65536 KiBSubmit StatisticProblem Description 集合有一个重要的特性:互异性,即集合中任意两个元素都是不同的,互异性使得集合中的元素没有重复。... -
Java中List集合去除重复数据的方法汇总
2021-03-10 08:21:56List集合概述List集合是一个元素有序(每个元素都有对应的顺序索引,第一个元素索引为0)、且可重复的集合。List集合常用方法List是Collection接口的子接口,拥有Collection所有方法外,还有一些对索引操作的方法。... -
Java集合总结.txt
2022-06-03 23:47:40特点:有序的,且可重复 ArrayList: 数据结构:一维数组 LinkedList: 数据结构:双向链表 Vector: 数据结构:一维数组 Stack: 数据结构:一维数组 特点:模拟了栈的模式 Set -- ... -
集合中的有序无序,可重复不可重复
2020-04-29 10:49:36总结:除了set不可重复,其余均可重复;map中key不可重复,value可重复 除了list和tree有序,其余均无序 转载:... -
Java双列集合HashMap
2020-12-22 17:16:36双列集合HashMap是属于java集合框架3大类接口的Map类, Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射.Map中的key不要求有序,不允许重复.value同样不要求有序,但允许重复. Iterator接口是... -
Java集合是否有序的问题(List、Set、Map)
2019-09-16 11:08:43是否有序指的是集合中的元素是否会按照插入的先后顺序来存储,而不是指集合中的元素本身是否有序 List public interface List<E> extends Collection<E> List 中的元素都是有序的,其常见的实现类有 ... -
java集合超详解
2018-08-03 21:28:15一、集合大纲 ...├——-List 接口:元素按进入先后有序保存,可重复 │—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全 │—————-├ ArrayList 接口... -
Java集合框架和泛型机制
2020-12-22 23:26:26无序:Set,不能重复 有序:List,允许重复 “key-value”对:Map (2)读写数据效率 Hash:两者都高。 Array:读快改慢。 Linked:读慢改快。 Tree:加入元素可排序使用。 2、泛型 ... -
Java--如何高效向List中存放不重复的数据(附带时间测试)
2021-03-08 16:56:42set不允许出现重复的值(key)List是不能存储重复数据的,而我们想利用List存储不重复的元素,一般都使用List自带的contains方法对元素进行判断,如果不包含再进行添加,但是这样太耗时了。含再进行添加,但是这样太...