Java list的用法排序及遍历
List中可以添加任何对象,包括自己定义的新的类。
List的常用实现类有:ArrayList和LinkedList。
1用法
ArrayList
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | publicstaticvoidmain(String[] args) {    // ArrayList类实现一个可增长的动态数组    List<String> list = newArrayList<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
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | publicstaticvoidmain(String[] args) {    // LinkedList类实现了链表,可初始化化为空或者已存在的集合    LinkedList<String> list = newLinkedList<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排序
数字排序
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | publicstaticvoidmain(String[] args) {    // 创建list    List<Integer> list = newArrayList<Integer>();    // 插入元素    list.add(2);    list.add(0);    list.add(3);    list.add(4);    list.add(1);    Collections.sort(list);    for(inti : list) {        System.out.println(i);    }} | 
中文排序
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | publicstaticvoidmain(String[] args) {    ArrayList<String> list = newArrayList<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);    }} | 
实体类排序
| 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 | packagenet.xsoftlab.baike;importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;publicclassTextList {    publicstaticvoidmain(String[] args) {        List<User> userlist = newArrayList<User>();        userlist.add(newUser("Y - 易小星 ", 33));        userlist.add(newUser("W - 王大锤", 33));        Comparator<User> cmp = newComparatorUser();        Collections.sort(userlist, cmp);        for(User user : userlist) {            System.out.println(user.getName());        }    }}classComparatorUser implementsComparator<User> {    @Override    publicintcompare(User u1, User u2) {        // 先按年龄排序        intflag = u1.getAge().compareTo(u2.getAge());        // 年龄相等比较姓名        if(flag == 0) {            returnu1.getName().compareTo(u2.getName());        } else{            returnflag;        }    }}classUser {    privateString name;    privateInteger age;    publicUser() {        super();    }    publicUser(String name, Integer age) {        super();        this.name = name;        this.age = age;    }    publicString getName() {        returnname;    }    publicvoidsetName(String name) {        this.name = name;    }    publicInteger getAge() {        returnage;    }    publicvoidsetAge(Integer age) {        this.age = age;    }} | 
3遍历
三种遍历方法
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | publicstaticvoidmain(String[] args) {    List<String> list = newArrayList<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(inti = 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());    }} | 
遍历时移除元素
| 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 | packagenet.xsoftlab.baike;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;publicclassRemoveItemFromList {    publicstaticvoidmain(String[] args) {        List<String> list = newArrayList<String>();        // 插入元素        list.add("list1");        list.add("list2");        list.add("list2");        list.add("list3");        // 实例化新的list防止因传递地址而达不到测试效果。        remove1(newArrayList<String>(list));        remove2(newArrayList<String>(list));        remove2_1(newArrayList<String>(list));        remove3(newArrayList<String>(list));    }    publicstaticvoidremove1(List<String> list) {        System.out.print("第一种方法 - > ");        try{            for(String str : list) {                if(str.equals("list2"))                    list.remove(str);            }        } catch(Exception e) {            System.out.println("移除失败!");        }    }    publicstaticvoidremove2(List<String> list) {        System.out.print("第二种方法 - > ");        for(inti = 0; i < list.size(); i++) {            String str = list.get(i);            if(str.equals("list2"))                list.remove(str);        }        System.out.println(list);        System.out.println("也有异常,可以用下面的方法避免。");    }    publicstaticvoidremove2_1(List<String> list) {        System.out.print("第二种方法修正 - > ");        for(inti = 0; i < list.size(); i++) {            String str = list.get(i);            if(str.equals("list2")) {                list.remove(str);                // 因移除了元素,位置发生偏移,需要重新对当前位置的元素进行判断。                i--;            }        }        System.out.println(list);    }    publicstaticvoidremove3(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);    }} | 
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号