当ArrayList集合中有字符串类型,又有对象时,如何简便的去除重复元素
2018-03-30 16:03
711 查看
ArrayList是List接口的一个实现类,ArrayList是基于数组实现的,查询元素很快。但是,如果进行元素的增删的话,涉及大量的元素的复制移动操作,特别影响性能。它是程序中最常见的一种集合。在ArrayList内部封装了一个初始化长度为10,但长度可变的数组对象,默认的加载因子为0.6,当存入的元素长度到达了该数组容量的60%,那么会产生一个新的数组,长度为原数组的1.5倍。然后将原来数组中的元素复制到新的数组中。但是也并不是无限扩容,最大为2147483639。ArrayList集合中大部分方法都是从父类Collection和List继承过来的。要实现对题目中问题的解答,所以举了一个完整的例子。
首先在创建一个Person类,在类中有姓名、年龄这两个属性,并对其进行封装,写出构造方法。代码如下:public class Perosn {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Perosn() {
super();
}
public Perosn(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Perosn [name=" + name + ", age=" + age + "]";
}
}然后在main方法中给出ArrayList集合,并存入字符串元素、Person对象元素。
boolean add(Object obj)向集合中添加一个元素;
boolean addAll(Collection c)将指定Collection中的所有元素添加到该集合中;
void add(int index,Object obj) 将元素obj插入在List集合的index处;
boolean addAll(int index,Collection c)将集合c所包含的所有元素插入到List集合的index处。
代码如下:
Iterator it=list1.iterator();
while(it.hasNext()) {
Object obj=it.next();
i++;
//如果是string类型的话
if(obj instanceof String){
if(!list2.contains(obj)) {
list2.add(obj);
}
}else{//如果不是string类型的话,那么就是Person类型
System.out.println("list的下标为"+i+"的是对象类型");
if(!list2.contains(obj.toString())){
//obj进行toString()方法,来看list2里面有没有obj的属性,没有就增加进去
list2.add(obj.toString()); }
}
}contains()方法是用来判断该集合中是否包含某个元素。此时加了!,就说明当obj不存在在list2集合中时,向list2集合添加obj。若只是单单判断对象元素,通过修改equals()方法就可以判断两个对象属性内容相同时即视为同一对象。通过修改equals()方法来判断的话,实现方法为:public boolean equals(Object obj){
if(obj instanceof Person){
Person stu=(Person)obj;
return stu.getName().equals(this.getName())&&stu.getSex().equals(this.getSex())&&stu.getAge()==this.getAge();
}
return false;
}这个时候只要两个对象属性一样,就视为同一对象。
用简便方法运行的结果如图:
首先在创建一个Person类,在类中有姓名、年龄这两个属性,并对其进行封装,写出构造方法。代码如下:public class Perosn {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Perosn() {
super();
}
public Perosn(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Perosn [name=" + name + ", age=" + age + "]";
}
}然后在main方法中给出ArrayList集合,并存入字符串元素、Person对象元素。
boolean add(Object obj)向集合中添加一个元素;
boolean addAll(Collection c)将指定Collection中的所有元素添加到该集合中;
void add(int index,Object obj) 将元素obj插入在List集合的index处;
boolean addAll(int index,Collection c)将集合c所包含的所有元素插入到List集合的index处。
代码如下:
ArrayList list1=new ArrayList(); list1.add("阿花"); list1.add("是个"); list1.add("仙女"); list1.add("是个"); list1.add(new Perosn("小可爱",18)); list1.add(new Perosn("小可爱",18));通过调用add()方法向ArrayList集合中添加了6个元素。循环遍历该集合,每取出一个放置在新的集合中,放置之前先判断新的集合是否已经包含了新的元素。所以要先创建一个新的集合,然后通过迭代器进行遍历,根据不同的数据类型进行判断。代码如下: int i=0;
Iterator it=list1.iterator();
while(it.hasNext()) {
Object obj=it.next();
i++;
//如果是string类型的话
if(obj instanceof String){
if(!list2.contains(obj)) {
list2.add(obj);
}
}else{//如果不是string类型的话,那么就是Person类型
System.out.println("list的下标为"+i+"的是对象类型");
if(!list2.contains(obj.toString())){
//obj进行toString()方法,来看list2里面有没有obj的属性,没有就增加进去
list2.add(obj.toString()); }
}
}contains()方法是用来判断该集合中是否包含某个元素。此时加了!,就说明当obj不存在在list2集合中时,向list2集合添加obj。若只是单单判断对象元素,通过修改equals()方法就可以判断两个对象属性内容相同时即视为同一对象。通过修改equals()方法来判断的话,实现方法为:public boolean equals(Object obj){
if(obj instanceof Person){
Person stu=(Person)obj;
return stu.getName().equals(this.getName())&&stu.getSex().equals(this.getSex())&&stu.getAge()==this.getAge();
}
return false;
}这个时候只要两个对象属性一样,就视为同一对象。
用简便方法运行的结果如图:
相关文章推荐
- 集合框架(去除ArrayList集合中的重复自定义对象元素案例)
- 集合框架_去除ArrayList集合中的重复字符串元素案例2
- 向ArrayList集合中存入对象,并以让集合用自己设定的方式去除重复元素!(覆写equals方法)
- 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
- 去除ArrayList集合中的重复字符串元素
- ArrayList去除集合中自定义对象元素的重复值
- ArrayList去除集合中自定义对象元素的重复值
- Java中ArrayList去除重复元素(包括字符串和自定义对象)
- 集合框架(去除ArrayList集合中的重复字符串元素案例1)
- 集合框架六:ArrayList——将自定义对象作为元素存储到ArrayList中,并去除重复元素
- 黑马程序员—集合将自定义对象作为元素存储到ArrayList集合中,并去除重复元素。 比如:存人对象。同姓名同年龄,视为同一个人,为重复元素。
- 集合框架(去除ArrayList集合中的重复字符串元素案例2)
- 集合框架_去除ArrayList集合中的重复字符串元素案例1
- 集合框架_去除ArrayList集合中的重复自定义对象元素案例
- Java将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
- 去除ArrayList集合中的重复自定义对象元素
- Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素
- 去除ArrayList集合中的重复自定义对象元素
- 将自定义对象作为元素存到ArrayList集合中,并去除重复元素
- Java基础知识强化之集合框架笔记28:ArrayList集合练习之去除ArrayList集合中的重复字符串元素(升级)