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接口,这种情况下不会报错,但是程序什么也不做。

  1. import java.util.ArrayList;
  2. import java.util.Collection;
  3. import java.util.List;
  4.  
  5. public class ArrayList01 {
  6.  
  7. public static void main(String[] args) {
  8. // TODO Auto-generated method stub
  9. List<String> allList = null;
  10. Collection<String> allCollection = null;
  11.  
  12. allList = new ArrayList<String>();
  13. allCollection = new ArrayList<String>();
  14.  
  15. allList.add("hello");
  16. allList.add(0, "world");
  17. System.out.println(allList);
  18. allCollection.add("Yes");
  19. allCollection.add("Good");
  20. allList.addAll(allCollection);
  21. allList.addAll(0, allCollection);
  22.  
  23. System.out.println(allList);
  24.  
  25. allList.remove(allCollection);
  26. //allList.removeAll(allCollection);
  27. System.out.println(allList);
  28. }
  29.  
  30. }

  

实际编程可以插入任意对象,但是如果想要通过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()方法,后者是表示一个哈希编码,可以理解为一个对象的编码。

  1. import java.util.HashSet;
  2. import java.util.Set;
  3.  
  4. class Per{
  5. private String name;
  6. private int age;
  7. public Per(String name, int age) {
  8. // TODO Auto-generated constructor stub
  9. this.name = name;
  10. this.age = age;
  11. }
  12.  
  13. public boolean equals(Object obj){
  14. if (this == obj) { //地址相等时是同一个对象
  15. return true;
  16. }
  17. if (!(obj instanceof Per)) { //传进来的不是本类的对象 不是同一个对象
  18. return false;
  19. }
  20.  
  21. Per p = (Per)obj; //进行向下转型
  22. if (this.name.equals(p.name)&&this.age==p.age) { //属性依次比较,如果相等,是同一个对象,不等不是同一个对象
  23. return true;
  24. }else {
  25. return false;
  26. }
  27. }
  28.  
  29. public int hashCode(){
  30. return this.name.hashCode()*this.age; //覆写hashCode 方法,指定编码公式
  31. }
  32.  
  33. public String toString(){
  34. return "姓名:"+this.name+"; 年龄: "+this.age;
  35. }
  36. }
  37.  
  38. public class SetDemo02 {
  39.  
  40. public static void main(String[] args) {
  41. // TODO Auto-generated method stub
  42. Set<Per> allSet = new HashSet<Per>();
  43. allSet.add(new Per("Tom", 30));
  44. allSet.add(new Per("Jim", 31));
  45. allSet.add(new Per("Tony", 32));
  46. allSet.add(new Per("Tony", 32));
  47. allSet.add(new Per("Tony", 32));
  48. allSet.add(new Per("Jack", 29));
  49. allSet.add(new Per("Mark", 33));
  50.  
  51. System.out.println(allSet);
  52.  
  53. }
  54.  
  55. }

  

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. poj 3140(树形dp)

    题目链接:http://poj.org/problem?id=3140 思路:简单树形dp题,dp[u]表示以u为根的子树的人数和. #include<iostream> #include ...

  2. 利用windbg探索进程和进程上下文

    1.列出所有活动进程 使用!process命令可以打印出活动进程的信息.第一个参数是要打印的EPROCESS的地址,如果指定为0则表示打印所有的进程.第二个参数用于说明打印进程信息的详细级别.指定0则 ...

  3. Android 一个app启动另一个app

    最近,一个app启动另一个app,这个玩法挺火的嘛,有没有试过更新QQ到5.1版本,QQ的健康里面就可以添加其他app,实现从QQ跳转到其他app应用.这个挺好玩的,一下子带来了多少流量啊. 一.先来 ...

  4. 2016.6.17 kali Linux 隧道工具

    隧道工具的基本概念: 1.在计算机网络中,隧道工具是指使用一种网络协议去封装另一种网络协议的技术. 2.通常用来数据伪装或者穿越防火墙,在入侵目标系统后,可用来提升权限和权限维持. Kali中的隧道工 ...

  5. 简单几何(推公式) UVA 11646 Athletics Track

    题目传送门 题意:给了长宽比例,操场一圈400米,问原来长宽的长度 分析:推出公式 /************************************************ * Author ...

  6. BFS POJ 3278 Catch That Cow

    题目传送门 /* BFS简单题:考虑x-1,x+1,x*2三种情况,bfs队列练练手 */ #include <cstdio> #include <iostream> #inc ...

  7. MP3/视频播放

    简单的视频.MP3播放 <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equ ...

  8. 12个实用的 Javascript 奇淫技巧

    这里分享12个实用的 Javascript 奇淫技巧.JavaScript自1995年诞生以来已过去了16个年头,如今全世界无数的网页在依靠她完成各种关键任务,JavaScript曾在Tiobe发布的 ...

  9. Google Code Jam 2009 Qualification Round Problem C. Welcome to Code Jam

    本题的 Large dataset 本人尚未解决. https://code.google.com/codejam/contest/90101/dashboard#s=p2 Problem So yo ...

  10. JS URL传中文参数引发的乱码问题

    今天的项目中碰到了一个乱码问题,从JS里传URL到服务器,URL中有中文参数,服务器里读出的中文参数来的全是“?”,查了网上JS编码相关资料得以解决. 解决方法一: 1.在JS里对中文参数进行两次转码 ...