Java中arraylist是否contains某元素的问题

问题描述

重写了OneElem中equals方法使得名字相同的话就判定arraylist中contains该元素public class Test { public static void main(String[] args) { ArrayList<OneElem> oe=new ArrayList<OneElem>(); OneElem o; for(int i=0; i<3; i++){ o=new OneElem("one"); if(oe.contains(o)) System.out.println("Contain"); else{ System.out.println("None"); oe.add(o); } } o=new OneElem("one"); if(oe.contains(o)) System.out.println("Contain"); else{ System.out.println("None"); oe.add(o); } }}以上可以得出我想要的结果public class Test1 { public static void main(String[] args) { ArrayList<OneElem> oe=new ArrayList<OneElem>(); OneElem o; for(int i=0; i<3; i++){ o=new OneElem(""+i); if(oe.contains(o)) System.out.println("Contain"); else{ System.out.println("None"); oe.add(o); } } o=new OneElem(""+1); if(oe.contains(o)) System.out.println("Contain"); else{ System.out.println("None"); oe.add(o); } }}以上不行,我最后添加的它认为是新元素...这两个Test我用的是同一个OneElem类...这是为了什么... 问题补充:href 写道

解决方案

你最好把equals贴出来 这是我执行的结果package com.test;import java.util.ArrayList;class OneElem {String name;OneElem(String name) {this.name = name;}public String getName() {return this.name;}@Overridepublic boolean equals(Object arg0) {if (arg0 != null && arg0 instanceof OneElem) {return this.getName().equals(((OneElem) arg0).getName());}return false;}}public class Test {public static void main(String[] args) {ArrayList<OneElem> oe = new ArrayList<OneElem>();OneElem o;for (int i = 0; i < 3; i++) {o = new OneElem("" + i);if (oe.contains(o))System.out.println("Contain");else {System.out.println("None");oe.add(o);}}o = new OneElem("" + 1);if (oe.contains(o))System.out.println("Contain");else {System.out.println("None");oe.add(o);}}}结果:NoneNoneNoneContain
解决方案二:
if (arg0 != null && arg0 instanceof OneElem) arg0 instanceof OneElem 表示是OneElem 的一个实例因为equals的参数为object的,所以可以接受任何的参数,对于不是OneElem类型的则return false。
解决方案三:
你把OneElem也贴出来撒

时间: 2024-09-08 13:08:27

Java中arraylist是否contains某元素的问题的相关文章

java中如何实现Treeset的元素是ArrayList???

问题描述 java中如何实现Treeset的元素是ArrayList??? java中如何实现TreeSet的元素是ArrayList??? 解决方案 不太明白想问什么,Treeset就是个容器,是可以放的.本人实际敲了一下,不报错. 解决方案二: new treeset>(): 解决方案三: 直接写. TreeSet<ArrayList<?>> treeSet = new TreeSet<ArrayList<?>>(); 解决方案四: 同楼上: Se

Java中ArrayList的使用方法简单介绍_java

ArrayList没有封装好的去重方法,比如对于一个[2, 5, 2, 3, 2, 4]的ArrayList,我要去除其中的重复的元素, 我也不想把语句也这么长,也不想用for循环的方法去重,那么可以先考虑把ArrayList转化为一个临时的HashSet,再把这个临时的HashSet转化回ArrayList,因为HashSet里面的元素是不可重复的嘛!至于什么是ArrayList与HashSet,在<详解java中的Collections类>已经说得很清楚了,这里不再赘述.  你可以这样写:

java中ArrayList 、LinkList的区别分析_java

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.      2.对于随机访问get和set,ArrayList优于LinkedList,因为ArrayList可以随机定位,而LinkedList要移动指针一步一步的移动到节点处.(参考数组与链表来思考)     3.对于新增和删除操作add和remove,LinedList比较占优势,只需要对指针进行修改即可,而ArrayList要移动数据来填补被删除的对象的空间. ArrayList和LinkedL

Java中ArrayList类的使用方法_java

Java中ArrayList类的用法 1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小 2.如何使用ArrayList 最简单的例子: ArrayList List = new ArrayList(); for( int i=0;i <10;i++ ) //给数组增加10个Int元素 List.Add(i); //..

Java中ArrayList和LinkedList的遍历与性能分析_java

前言 通过本文你可以了解List的五种遍历方式及各自性能和foreach及Iterator的实现,加深对ArrayList和LinkedList实现的了解.下面来一起看看吧. 一.List的五种遍历方式 1.for each循环 List<Integer> list = new ArrayList<Integer>(); for (Integer j : list) { // use j } 2.显示调用集合迭代器 List<Integer> list = new Ar

分析Java中ArrayList与LinkedList列表结构的源码_java

一.ArrayList源码分析(JDK7) ArrayList内部维护了一个动态的Object数组,ArrayList的动态增删就是对这个对组的动态的增加和删除. 1.ArrayList构造以及初始化 ArrayList实例变量 //ArrayList默认容量 private static final int DEFAULT_CAPACITY = 10; //默认空的Object数组, 用于定义空的ArrayList private static final Object[] EMPTY_ELE

Java中ArrayList和LinkedList区别

一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针. 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据. ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references).例如

Java中ArrayList HashSet的使用 以及HashCode的用处

  Java.uitl包中的 ArrayList   和HashSet类  我们都用过,但是我们可能都没有去,深入研究过其内部的结构 .都是实现了Collection的类 ,Collection是一个标准   ArrayList   其实就相当与一个动态数组,我们每增加一个元素,他啊都会将元素增加到ArrayList中并且为这个元素分配指定索引 就像一个数组一样 .这个索引就是从0开始 1 2  34 .... HashSet  看到Hash我们就知道,它的内部结构了,学过数据结构我们都知道ha

Java中使用commons-beanutils对List元素中的多个属性进行排序

commons-beanutils 类库中有一个 BeanComparator 类,可以用来给 JavaBean 排序.但是这个类一次只能对一个属性排序.下面是一个利用 BeanComparator 实现对 JavaBean 的多个属性进行排序的例子,非常简单: 1.import org.apache.commons.beanutils.BeanComparator; 2.import java.util.Collections; 3.import java.util.Comparator; 4