ArrayList中有remove 方法和 removeAll方法,

ArrayList中不仅继承了接口Collection中的remove方法,而且还扩展了remove方法。

Collection中声明的接口为 public boolean remove(Object o)

public boolean removeAll(Collection<?> c)

ArrayList中含有的方法为public E remove(int index)

实际编程中可能会通过一个Collection来调用remove接口,这种情况下不会报错,但是程序什么也不做。

import java.util.ArrayList;
import java.util.Collection;
import java.util.List; public class ArrayList01 { public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> allList = null;
Collection<String> allCollection = null; allList = new ArrayList<String>();
allCollection = new ArrayList<String>(); allList.add("hello");
allList.add(0, "world");
System.out.println(allList);
allCollection.add("Yes");
allCollection.add("Good");
allList.addAll(allCollection);
allList.addAll(0, allCollection); System.out.println(allList); allList.remove(allCollection);
//allList.removeAll(allCollection);
System.out.println(allList);
} }

  

实际编程可以插入任意对象,但是如果想要通过remove(object o)来删除某个对象,这个对象必须是系统自定义的对象,如果不是的话,需要在类中覆写Object类的equals()及hashCode()方法。

HashSet 特点:

里面元素不能重复,而且采用散列的存储方式,没有顺序。

TreeSet 特点:

可以对输入的数据进行有序的排列。

虽然如此,但是对于自定义的类,如果没有制定好排序规则,会出现异常,因此必须实现comparable接口才能正常使用TreeSet。实现comparable接口还需注意,如果对于类中某个属性没有进行比较的指定,则也会认为是同一个对象,比如Man{name = tom, score = 20}; Man { name = Jim,score = 20};如果只是指定score的比较,而没有指定名字的比较,则会认为两个Man对象是同一个对象。

而对于HashSet,如果想要除去其中所有的重复元素,必须覆写Object类中的equals()方法和hashCode()方法,后者是表示一个哈希编码,可以理解为一个对象的编码。

import java.util.HashSet;
import java.util.Set; class Per{
private String name;
private int age;
public Per(String name, int age) {
// TODO Auto-generated constructor stub
this.name = name;
this.age = age;
} public boolean equals(Object obj){
if (this == obj) { //地址相等时是同一个对象
return true;
}
if (!(obj instanceof Per)) { //传进来的不是本类的对象 不是同一个对象
return false;
} Per p = (Per)obj; //进行向下转型
if (this.name.equals(p.name)&&this.age==p.age) { //属性依次比较,如果相等,是同一个对象,不等不是同一个对象
return true;
}else {
return false;
}
} public int hashCode(){
return this.name.hashCode()*this.age; //覆写hashCode 方法,指定编码公式
} public String toString(){
return "姓名:"+this.name+"; 年龄: "+this.age;
}
} public class SetDemo02 { public static void main(String[] args) {
// TODO Auto-generated method stub
Set<Per> allSet = new HashSet<Per>();
allSet.add(new Per("Tom", 30));
allSet.add(new Per("Jim", 31));
allSet.add(new Per("Tony", 32));
allSet.add(new Per("Tony", 32));
allSet.add(new Per("Tony", 32));
allSet.add(new Per("Jack", 29));
allSet.add(new Per("Mark", 33)); System.out.println(allSet); } }

  

ArrayList调用remove方法需要注意的地方的更多相关文章

  1. ArrayList调用remove(int index)抛出UnsupportedOperationException问题分析以及解决记录

    使用Arrays转数组成为List后,不能调用add(...)和remove(...)方法,此时如果调用就会抛出UnsupportedOperationException异常 原因 其实Arrays. ...

  2. List 调用 remove 方法时抛出 java.lang.UnsupportedOperationException 异常原因

    原因 使用 Arrays.asList(arr) 转换的 List 并不能进行 add 和 remove 操作.       Arrays.asList(arr) 返回的类型是 Aarrays$Arr ...

  3. Java基础(37)ArrayList的remove方法

    1.问题描述 给定两个字符串 s 和 t,它们只包含小写字母. 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母. 请找出在 t 中被添加的字母. 输入: s = "abcd& ...

  4. java ArrayList的remove()方法的参数为int和Integer的问题

    ArrayList的父类List中,有2个remove重载方法: remove(int index) remove(Object o) 假如参数输入为数字类型,到底是删除值等于该数字的对象还是删除索引 ...

  5. Java list.remove( )方法需要注意的地方

    List<Integer> integerList = new ArrayList<>(); 当我们要移除某个Item的时候 remove(int position):移除某个 ...

  6. List的remove方法里的坑

    今天遇到一件怪事,用一个ArrayList添加了一个对象,再调用ArrayList的remove方法删除该对象,当然这时对象是数据库里查出来的,但内容绝对是一样,却发现remove失败了.演示一下,这 ...

  7. java 数据类型:集合接口Collection之List~ArrayList:remove移除;replaceAll改变原有值;sort排序;迭代器listIterator();

    什么是List集合: 特点: 元素有序可重复的集合. 集合中每个元素都有其对应的顺序索引. List集合默认按元素的添加顺序设置元素的索引,索引从0开始.   List接口的常用方法: List可以使 ...

  8. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  9. List<T>的IndexOf方法和Remove方法

    Microsoft地址 List<T>的IndexOf()方法 如果T是值类型的,就按照比较值的方法从列表的第一个元素开始逐个匹配,如果T是引用类型,就比较引用是否相同 举例如下: cla ...

随机推荐

  1. 【项目启动】 tomcat启动,项目无法启动,无法正常访问/项目可以启动,报错:java.lang.ClassNotFoundException: ContextLoaderListener

    使用maven搭建项目(这个错误和是不是使用maven搭建项目没有关系),然后部署到tomcat中运行. 出现问题1: tomcat跑起来了,但是启动时间很短,没有报错,项目不能正常访问 项目启动时间 ...

  2. Android Studio 1.0首次安装遇到的问题,无法下载SDK

    相信,在安装Android Studio的过程中会遇到很多问题,特别是第一次启动下载不了sdk.郁闷了吧. 可以去官网下载,也可以点击这里下载Android Studio和sdk. 一.不下载SDK启 ...

  3. [saiku] 在 Tomcat 下部署 saiku

    上一篇介绍了如何配置免登录[免登录进入管理台] 本文主要是一步一步解释如何在Tomcat下部署saiku,为了让你更好更快的使用. 开始之前,假设你已经比较熟悉数据集市数据库,以及如何建立Mondri ...

  4. C#将DataTable转换成list的方法

    本文实例讲述了C#将DataTable转换成list及数据分页的方法.分享给大家供大家参考.具体如下: /// <summary>   /// 酒店评论列表-分页  /// </su ...

  5. css 层叠样式表

    css选择器 派生选择器 根据其元素在其上下文关系来定义样式 <style type="text/css">body{ font-size:12px; color:re ...

  6. DevExpress DXperience 的ASPxFilterControl 不显示 Like 菜单的方法

    当使用Linq 作为数据源时,如果使用 ASPxFilterControl 的 Like 菜单筛选数据,就会出现以下错误 LINQ to Entities does not recognize the ...

  7. Equipment Box[HDU1110]

    Equipment Box Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  8. Noi2011 : 智能车比赛

    假设S在T左边,那么只能往右或者上下走 f[i]表示S到i点的最短路 f[i]=min(f[j]+dis(i,j)(i能看到j)) 判断i能看到j就维护一个上凸壳和一个下凸壳 时间复杂度$O(n^2) ...

  9. javascript继承扩展类方法实现

    javascript没有原生的继承语法,这确实很让人困惑,但是广大人民群从的智慧是无穷的.最近呢,正尝到一点从源码中学习的甜头,不分享一下实在难以平复激动的心情.前不久改造视频播放插件的时候,找到了v ...

  10. [Cocos2d-x For WP8]Particle粒子系统

    在游戏中,经常要实现一些真实的效果,这些效果(如,火焰,雪花等)都是由大量微粒组合而形成的.为了在游戏中实现这种效果,我们必须引进粒子系统,粒子系统中需要包括四个部分:粒子对象,运动规律,随机性,粒子 ...