一个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> 。

参考技术A

代码如下:

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 中不断添加 元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加 元素会带来分摊固定时间开销那样简单



参考技术B 很简单
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值的时候,遇到重复就不要添加,怎么做的主要内容,如果未能解决你的问题,请参考以下文章

java ArrayList数组中如何插入一个元素

ArrayList原理演示

java 27 - 7 反射之 通过反射越过泛型检查

java用poi往excel里写数据遇到换行问题

如何给数组添加元素

Hashmat