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;
        }
        
    }
  • 相关阅读:
    关于Maven项目build时出现No compiler is provided in this environment的处理
    freemaker的函数使用
    FTP在docker容器中上传失败解决,改为被动模式
    linux重定向及nohup不输出的方法
    手动抠下的wordpress登录页面样式
    使用后端生成图片验证码流文件(不推荐)
    部署到docker容器后图片验证码显示不出来
    Linux修改profile文件改错了,恢复的方法
    DotNETCore 学习笔记 异常处理
    DotNETCore 学习笔记 路由
  • 原文地址:https://www.cnblogs.com/ll1994/p/8306068.html
Copyright © 2011-2022 走看看