zoukankan      html  css  js  c++  java
  • ArrayList:去除集合中字符串的重复值 LinkedList:去除集合中自定义对象的重复值

    
    
    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;
        }
        
    }
  • 相关阅读:
    如何利用迅雷下载百度云?
    Windows 8.1/Server 2012 R2/Embedded 8.1 with Update 3(MSDN最新版)
    Visual Studio 2013 and .NET 4.6
    明朝那些事儿的作者的经历
    嵌入式OS的现状、智能的物联网与未来的机器人
    系统战略+极致运营=战无不胜的千机团
    惠普笔记本按开机键后电源灯亮的,但是屏幕一直是黑的,只有大写锁定键闪烁,闪3次一个循环,听得到风扇
    Android平台免Root无侵入AOP框架Dexposed使用详解
    iOS-OC-APP热更新,动态更新(仿QQ打开或关闭某个功能)
    ios app 实现热更新(无需发新版本实现app添加新功能)
  • 原文地址:https://www.cnblogs.com/ll1994/p/8306068.html
Copyright © 2011-2022 走看看