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. C/C++函数使用

    1 memset 将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针. 函数介绍 ...

  2. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Que

    看错误提示就知道是因为SQL Server的Ad Hoc Distributed Queries组件被禁用了,这里我用的SQL Server版本是2005,只需要开启Ad Hoc Distribute ...

  3. ITEYE中的读书笔记:重构其实就是持续改进

    原文地址:http://hawkon.iteye.com/blog/2093338#bc2355877 前段时间同事参加ITEYE的试读有奖, 没想到得了个奖,拿到一本书.由于同事的推荐我也认真读了一 ...

  4. DataTable转换成List<T>

    很多时候需要将DataTable转换成一组model,直接对model执行操作会更加方便直观. 代码如下: public static class DataTableToModel { public ...

  5. VSPM虚拟串口使用

    (1)打开虚拟串口工具,当你设置好你程序中的串口信息后,打开程序中的串口,然后虚拟串口中所显示的就是程序的所提供的串口信息 (2)选中其中一个串口,修改管理信息,点击”重新连接“ , 直接在管理那里, ...

  6. TYVJ P1013 找啊找啊找GF Label:动态规划

    做题记录:2016-08-15 22:19:04 背景 MM七夕模拟赛 描述 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见.""诶,别再见啊.. ...

  7. POJ 1625 Censored!(大数+DP)

    题目链接 这题,真心木啥意思,就是数据里貌似字符有负数,注意gets读入.. #include <iostream> #include <cstring> #include & ...

  8. div里嵌套了img底部会有白块问题和图片一像素问题解决

    div里嵌套了img底部会有白块 因为img默认是按基线(baseline)对齐的.对比一下图片和右边的p, q, y等字母,你会发现这三个字母的“小尾巴”和图片下方的空白一样高.下面这张图中的黑线就 ...

  9. JS来添加弹出层,并且完成锁屏

    上图 <html> <head> <title>弹出层</title> <style type="text/css"> ...

  10. ARC指南1 - strong和weak指针

      一.简介 ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因 ...