Java——ArrayList集合
一、ArrayList常用方法:
1、ArrayList:数组结构;线程不同步,查询速度快,增删速度慢。1.2jdk
(1)创建:ArrayList al=new ArrayList();
(2)添加:add(Object obj);//al.add("java");
注释:(1)add接收的参数为Object对象,为了便于接收任何类型的对象;(2)集合中存储的对象都是引用(地址);
(3)查询集合长度:size();//al.size();
(4)删除:remove(obj[,index]);//al.remove("java");al.remove("0");删除对象返回boolean,删除索引返回删除的对象;
(5)清空:clear();无返回值;
(6)判断存在:contains(Object obj);//al.contains("java");true;
(7)判断是否为空:isEmpty();//长度为0是返回true;
(8)取交集:retainAll(Collection);//al1.retainAll(al2);在al1集合中只保留和al2中相同的元素,al2不变;
(9)去交集:removeAll(Collection);//和retainAll相反,去掉所有交集元素;
二、ArrayList去重:
1、实体类:
public class Person { private String name; private int age; Person(String name,int age){ this.name=name; this.age=age; } public String getName(){ return name; } public int getAge(){ return age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public boolean equals(Object obj) { if (!(obj instanceof Person)) return false; Person p=(Person)obj; return this.name.equals(p.name) && this.age==p.age; } }
2、去重工具类:
public class MyUtil { public static ArrayList removeRepeat(ArrayList al){ //创建临时ArrayList实例; ArrayList temp=new ArrayList(); for (Iterator it = al.iterator(); it.hasNext();){ //ArrayList中contain中会调用indexOf方法,内部使用equals方法判断,在person中重写equals; Object obj=it.next(); if (!temp.contains(obj)){ temp.add(obj); } } return temp; } }
3、测试:
public class Test { public static void main(String[] args) { ArrayList al = new ArrayList(); //Person对象传入时,被提升为Object对象; al.add(new Person("zs0", 10)); al.add(new Person("zs1", 10)); al.add(new Person("zs1", 11)); al.add(new Person("zs1", 11)); ArrayList arrayList = MyUtil.removeRepeat(al); for (Iterator<Person> iterator = arrayList.iterator(); iterator.hasNext(); ) { Person person = iterator.next(); System.out.println(person); } } }