Java list的用法排序及遍历

博客来源:http://baike.xsoftlab.net/view/208.html

Java list的用法排序及遍历

概要:

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

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

| |目录

    用法

    ArrayList

    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

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

    排序

    数字排序

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

    中文排序

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

    实体类排序

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

    遍历

    三种遍历方法

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

    遍历时移除元素

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


    更多干货等你来拿 http://www.itit123.cn/


      • 2
        点赞
      • 10
        收藏
        觉得还不错? 一键收藏
      • 0
        评论
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值