• Java list的用法排序及遍历


    List中可以添加任何对象,包括自己定义的新的类。

    List的常用实现类有:ArrayList和LinkedList。

    1用法

    ArrayList

    Java | 复制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public static void main(String[] args) {
        // ArrayList类实现一个可增长的动态数组
        List<String> list = new ArrayList<String>();
        // 插入元素
        list.add("list1");
        list.add("list2");
        // 打印list的大小
        System.out.println(list.size());
        // 按索引移除元素
        list.remove(0);
        // 按对象移除元素
        list.remove("list2");
        // 打印list的大小
        System.out.println(list.size());
        // 清空list
        list.clear();
    }

    LinkedList

    Java | 复制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public static void main(String[] args) {
        // LinkedList类实现了链表,可初始化化为空或者已存在的集合
        LinkedList<String> list = new LinkedList<String>();
        // 插入元素
        list.add("list2");
        list.add("list3");
        // 向链表头插入数据
        list.addFirst("list1");
        // 向链表尾插入数据
        list.addLast("list4");
        for (String str : list) {
            System.out.println(str);
        }
        // 获取链表头数据
        System.out.println("链表头数据:" + list.getFirst());
        // 获取链表尾数据
        System.out.println("链表尾数据:" + list.getLast());
    }

    2排序

    数字排序

    Java | 复制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static void main(String[] args) {
        // 创建list
        List<Integer> list = new ArrayList<Integer>();
        // 插入元素
        list.add(2);
        list.add(0);
        list.add(3);
        list.add(4);
        list.add(1);
        Collections.sort(list);
        for (int i : list) {
            System.out.println(i);
        }
    }

    中文排序

    Java | 复制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("一鸣惊人-Y");
        list.add("人山人海-R");
        list.add("海阔天空-H");
        list.add("空前绝后-K");
        list.add("后来居上-H");
        Comparator<Object> cmp = Collator.getInstance(java.util.Locale.CHINA);
        Collections.sort(list, cmp);
        for (String str : list) {
            System.out.println(str);
        }
    }

    实体类排序

    Java | 复制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    package net.xsoftlab.baike;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    public class TextList {
        public static void main(String[] args) {
            List<User> userlist = new ArrayList<User>();
            userlist.add(new User("Y - 易小星 "33));
            userlist.add(new User("W - 王大锤"33));
            Comparator<User> cmp = new ComparatorUser();
            Collections.sort(userlist, cmp);
            for (User user : userlist) {
                System.out.println(user.getName());
            }
        }
    }
    class ComparatorUser implements Comparator<User> {
        @Override
        public int compare(User u1, User u2) {
            // 先按年龄排序
            int flag = u1.getAge().compareTo(u2.getAge());
            // 年龄相等比较姓名
            if (flag == 0) {
                return u1.getName().compareTo(u2.getName());
            else {
                return flag;
            }
        }
    }
    class User {
        private String name;
        private Integer age;
        public User() {
            super();
        }
        public User(String name, Integer age) {
            super();
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
    }

    3遍历

    三种遍历方法

    Java | 复制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        // 插入元素
        list.add("list1");
        list.add("list2");
        list.add("list3");
        System.out.println("第一种遍历方法 - >");
        for (String str : list) {
            System.out.println(str);
        }
        System.out.println("第二种遍历方法 - >");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("第三种遍历方法 - >");
        Iterator<String> iter = list.iterator();
        while (iter.hasNext()) {
            System.out.println(iter.next());
        }
    }

    遍历时移除元素

    Java | 复制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    package net.xsoftlab.baike;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    public class RemoveItemFromList {
        public static void main(String[] args) {
            List<String> list = new ArrayList<String>();
            // 插入元素
            list.add("list1");
            list.add("list2");
            list.add("list2");
            list.add("list3");
            // 实例化新的list防止因传递地址而达不到测试效果。
            remove1(new ArrayList<String>(list));
            remove2(new ArrayList<String>(list));
            remove2_1(new ArrayList<String>(list));
            remove3(new ArrayList<String>(list));
        }
        public static void remove1(List<String> list) {
            System.out.print("第一种方法 - > ");
            try {
                for (String str : list) {
                    if (str.equals("list2"))
                        list.remove(str);
                }
            catch (Exception e) {
                System.out.println("移除失败!");
            }
        }
        public static void remove2(List<String> list) {
            System.out.print("第二种方法 - > ");
            for (int i = 0; i < list.size(); i++) {
                String str = list.get(i);
                if (str.equals("list2"))
                    list.remove(str);
            }
            System.out.println(list);
            System.out.println("也有异常,可以用下面的方法避免。");
        }
        public static void remove2_1(List<String> list) {
            System.out.print("第二种方法修正 - > ");
            for (int i = 0; i < list.size(); i++) {
                String str = list.get(i);
                if (str.equals("list2")) {
                    list.remove(str);
                    // 因移除了元素,位置发生偏移,需要重新对当前位置的元素进行判断。
                    i--;
                }
            }
            System.out.println(list);
        }
        public static void remove3(List<String> list) {
            System.out.print("第三种方法 - > ");
            Iterator<String> iter = list.iterator();
            while (iter.hasNext()) {
                String str = iter.next();
                if (str.equals("list2"))
                    iter.remove();
            }
            System.out.println(list);
        }
    }
  • 相关阅读:
    VUE第一个项目怎么读懂
    Excel催化剂开源第33波-Quick Bible For PPT插件项目全代码开源
    [iOS基础控件
    awk支持多个记录分隔符的写法
    关于awk中NR、FNR、NF、$NF、FS、OFS的说明
    测试开发CICD——Docker——docker安装nginx
    测试开发CICD——Docker——docker安装python3.5
    测试开发CICD——Docker——docker安装tomcat
    测试开发CICD——Docker——docker安装redis
    测试开发CICD——Docker——docker安装mysql
  • 原文地址:https://www.cnblogs.com/lzq198754/p/5780220.html
Copyright © 2020-2023  润新知