一个arraylist,往里面add值的时候,遇到重复就不要添加,怎么做
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个arraylist,往里面add值的时候,遇到重复就不要添加,怎么做相关的知识,希望对你有一定的参考价值。
可以使用set做媒介,先将需要加入的数据存入set后再从set存入list。
如图所示
拓展资料:
java集合框架
Set和List的区别
1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。
3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
代码如下:
public static void main(String[] args)
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
String str = "aaa";
if(!list.contains(str))
list.add(str);
for(int i=0;i<list.size();i++)
System.out.println(list.get(i));
拓展资料
List 接口的大小可变 数组的实现,位于API文档的 java.util.ArrayList<E>。实现了所有可选列表操作,并允许包括 null 在内的所有 元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的 数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)
size、isEmpty、get、set、iterator 和 listIterator 操作都以固定时间运行。add 操作以分摊的固定时间 运行,也就是说,添加 n 个 元素需要 O(n) 时间。其他所有操作都以线性时间运行(大体上讲)。与用于 LinkedList 实现的常数因子相比,此实现的常数因子较低。
每个 ArrayList 实例都有一个容量。该容量是指用来存储列表 元素的 数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加 元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加 元素会带来分摊固定时间开销那样简单
if not objArray.Contain(x) then objArray.add(x)
因为, ArrayList就是个集合, 你直接调用Contain方法, 就可以判断这个值存不存在 参考技术C List<Integer> inteList = xxxxxxxxxx;.//这里是得到你所说的有重复的数据
HashSet<Integer> set = new HashSet<Integer>();//创建一个set用来去重复
for(Integer inte:inteList) //inteList是要来保存要放进去的值
set.add(inte);
List list = new ArrayList();
list.addAll(set);//把set放入list中本回答被提问者采纳 参考技术D 你可以用Set集合,会自动去除重复的数据
java 27 - 7 反射之 通过反射越过泛型检查
之前学过的集合里面都有泛型,规定了泛型的类型以后,就不能往这个集合添加除了这个类型之外的类型数据了。
那么,有什么方法可以越过这个泛型,添加特定类型以外的类型数据么?
例子:
往ArrayList<Integer>集合中添加一个字符串String类型的数据
分析:
通过查看ArrayList的add()方法,可以知道,add(E e)。E这个泛型是Object的。
就可以通过反射来直接调用ArrayList集合的add方法进行添加
1 public static void main(String[] args) throws Exception { 2 3 // 创建ArrayList集合对象 4 ArrayList<Integer> array = new ArrayList<Integer>(); 5 6 // 直接添加肯定不行 7 // array.add("hello"); 8 9 // 通过查看ArrayList的add()方法,可以知道,add(E e)。E这个泛型是Object的。 10 // 就可以通过反射来直接调用ArrayList集合的add方法进行添加 11 12 // 获取ArrayList集合的class字节文件对象 13 Class c = array.getClass(); 14 // 获取add方法,方法需要的参数是Object类的 15 Method m = c.getMethod("add", Object.class); 16 // 调用add方法 使用array(AllayList)的add方法,添加“xxx” 17 m.invoke(array, "hello"); 18 m.invoke(array, "world"); 19 20 System.out.println(array); //[hello, world] 21 22 }
以上是关于一个arraylist,往里面add值的时候,遇到重复就不要添加,怎么做的主要内容,如果未能解决你的问题,请参考以下文章