import java.util.ArrayList;
/*
* ArrayList:去除集合中字符串的重复值(字符串的内容相同)
*
* 数组的长度:数组名.length;
* 字符串的长度:字符串对象.length();
* 集合的长度:集合对象.size();
*/
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("张三");
list.add("张三");
list.add("李四");
list.add("李四");
list.add("王五");
System.out.println(list);//[张三, 张三, 李四, 李四, 王五]
//method1(list);
method2(list);
System.out.println(list);//[张三, 李四, 王五]
}
//2.拿前面的元素和后面的元素进行比较,发现后面的元素和前面的元素值相等的话,就将后面的元素值进行删除
private static void method2(ArrayList<String> list) {
for(int i=0; i<list.size()-1; i++){
for(int j=i+1; j<list.size(); j++){
//如果前面的元素和后面的元素相等的话,就删除后面的元素
if(list.get(i).equals(list.get(j))){
list.remove(j);
//又因为集合的长度是动态变化的,所以j对应的元素值删除之后,j的索引需要-1
j--;
}
}
}
}
//1.创建一个新的集合,然后遍历原有的集合元素,判断当前的元素是否包含在新集合中,如果不包含就添加到新集合中
private static void method1(ArrayList<String> list) {
ArrayList<String> list2 = new ArrayList<String>();
for(int i=0; i<list.size(); i++){
String value = list.get(i);
if(!list2.contains(value)){
list2.add(value);
}
}
System.out.println(list2);//[张三, 李四, 王五]
}
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
//LinkedList:去除集合中自定义对象的重复值(对象的成员变量值都相同)
public class LinkedListTest {
public static void main(String[] args) {
LinkedList<Person> list = new LinkedList<Person>();
list.add(new Person("张三", 18, '男'));
list.add(new Person("张三", 18, '男'));
list.add(new Person("李四", 18, '男'));
list.add(new Person("李四", 20, '男'));
list.add(new Person("李四", 18, '男'));
list.add(new Person("张三", 28, '男'));
Iterator<Person> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("----------------------------------");
method2(list);
iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
//2.将前面的元素值和剩余的元素值进行比较,一旦相等就将后面的元素值进行删除
private static void method2(LinkedList<Person> list) {
for(int i=0; i<list.size()-1; i++){
for(int j=i+1; j<list.size(); j++){
if(list.get(i).equals(list.get(j))){
list.remove(j);
//又因为集合的长度是动态变化的,所以j对应的元素值删除之后,j的索引需要-1
j--;
}
}
}
}
// 1.创建一个新的集合,然后遍历原始集合中的元素,然后判断当前元素是否包含在新集合中,如果不包含就将元素添加到新集合中
private static void method1(LinkedList<Person> list) {
ArrayList<Person> list2 = new ArrayList<Person>();
for (int i = 0; i < list.size(); i++) {
Person p = list.get(i);
if (!list2.contains(p)) {
list2.add(p);
}
}
Iterator<Person> iterator = list2.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
public class Person {
private String name;
private int age;
private char sex;
public Person() {
super();
}
public Person(String name, int age, char sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
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 char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (sex != other.sex)
return false;
return true;
}
}