java List操作

package shaohv.List;

import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;

public class ListOperate {
	/*
	 * 1、List支持泛型
	 * 2、List是个接口不能实例化,其具有ArrayList,LinkedList,Vector,Stack四个实现类
	 */
	public static void main(String[] args) {
		/*
		 * 1. java List的基本用法
		 */
		//1.1 ArrayList类实现一个可增长的动态数组
		System.out.println("\n1.1 ***************************");
	    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();
	    
	    
        //1.2 LinkedList类实现了链表,可初始化化为空或者已存在的集合
	    System.out.println("\n1.2 ***************************");
        LinkedList<String> list2 = new LinkedList<String>();
        // 插入元素
        list2.add("list2");
        list2.add("list3");
        // 向链表头插入数据
        list2.addFirst("list1");
        // 向链表尾插入数据
        list2.addLast("list4");
        for (String str : list2) {
            System.out.println(str);
        }
        // 获取链表头数据
        System.out.println("链表头数据:" + list2.getFirst());
        // 获取链表尾数据
        System.out.println("链表尾数据:" + list2.getLast());
        
        
        /*
         * 2. java List的排序
         */
        //2.1 数字排序
        System.out.println("\n2.1 ***************************");
        // 创建list
        List<Integer> list3 = new ArrayList<Integer>();
        // 插入元素
        list3.add(2);
        list3.add(0);
        list3.add(3);
        list3.add(4);
        list3.add(1);
        Collections.sort(list3);
        for (int i : list3) {
            System.out.println(i);
        }
        
        //2.2 中文排序
        System.out.println("\n2.2 ***************************");
        ArrayList<String> list4 = new ArrayList<String>();
        list4.add("一鸣惊人-Y");
        list4.add("人山人海-R");
        list4.add("海阔天空-H");
        list4.add("空前绝后-K");
        list4.add("后来居上-H");
        Comparator<Object> cmp = Collator.getInstance(java.util.Locale.CHINA);
        Collections.sort(list4, cmp);
        for (String str : list4) {
            System.out.println(str);
        }
        
        //2.3 实体排序
        System.out.println("\n2.3 ***************************");
        List<User> userlist = new ArrayList<User>();
        userlist.add(new User("易小星 ", 33));
        userlist.add(new User("王大锤", 33));
        userlist.add(new User("tom", 3));
        userlist.add(new User("bob", 3));
        userlist.add(new User("王大大", 33));
        Comparator<User> cmp2 = new ComparatorUser();
        Collections.sort(userlist, cmp2);
        for (User user : userlist) {
            System.out.println(user.getName());
        }
        
        
        /*
         * 3. List 遍历
         */
        System.out.println("\n3. ***************************");
        List<String> list5 = new ArrayList<String>();
        // 插入元素
        list5.add("list1");
        list5.add("list2");
        list5.add("list3");
        System.out.println("第一种遍历方法 - >");
        for (String str : list5) {
            System.out.println(str);
        }
        System.out.println("第二种遍历方法 - >");
        for (int i = 0; i < list5.size(); i++) {
            System.out.println(list5.get(i));
        }
        System.out.println("第三种遍历方法 - >");
        Iterator<String> iter = list5.iterator();
        while (iter.hasNext()) {
            System.out.println(iter.next());
        }
        
        /*
         * 4. Stack
         */
        System.out.println("\n4. ***************************");
        Stack<String> s = new Stack<String>();
        s.push("abc");
        s.push("xyz");
        s.push("zzz");
        s.pop();
        Iterator<String> it = s.iterator();
        while(it.hasNext()){
        	System.out.println(it.next());
        }
        
        Stack<Integer> s2 = new Stack<Integer>();
        s2.push(1);
        s2.push(2);
        s2.push(3);
        s2.pop();
        Iterator<Integer> it2 = s2.iterator();
        while(it2.hasNext()){
        	System.out.println(it2.next());
        }
	}
}

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;
    }
}

结果输出:

1.1 ***************************
2
0

1.2 ***************************
list1
list2
list3
list4
链表头数据:list1
链表尾数据:list4

2.1 ***************************
0
1
2
3
4

2.2 ***************************
海阔天空-H
后来居上-H
空前绝后-K
人山人海-R
一鸣惊人-Y

2.3 ***************************
bob
tom
易小星 
王大大
王大锤

3. ***************************
第一种遍历方法 - >
list1
list2
list3
第二种遍历方法 - >
list1
list2
list3
第三种遍历方法 - >
list1
list2
list3

4. ***************************
abc
xyz
1
2

  

posted @ 2015-08-24 23:52  iken  阅读(163)  评论(0)    收藏  举报