集合框架

简介

如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一个非常简单的程序。

程序在运行时才知晓需要在何时何处建立多少何种类型的对象,不能用命名的引用来保存每一个对象

使用集合(容器)来保存对象(对象的引用),克服数组的定长问题及特殊方式存储(map)


List列表:有序可重复  常用实现类:ArrayList(采用数组的方式实现,检索的效率高,插入和删除的效率低)

                                                          LinkedList(采用双向循环链表的方式实现,插入和删除的效率高)

Set集合:无序不可重复(map的key,故不可重复)  常用实现类: HashSet   TreeSet  

Map映射:key--value键值对(hash表的方式实现)

具体使用

String的使用与基本数据类似,不宜理解集合的使用,故建立另外得User类来使用集合

程序简单的三个java类如图

user类
public class User {
	private String name;
	private String password;
	private int age;
	
	public User(){
		
	}
	
	public User(String name,String password,int age){
		this.name = name;
		this.password = password;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
   
}

ForArrayList类
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ForArrayList {
	public static void main(String[] args) {
		List <User> users = new ArrayList<User>(); 
		
		users.add(new User("ooo","111",20));
		users.add(new User("uuu","222",20));
		//遍历方法一,for each
		for(User u : users){
			System.out.println(u);
			System.out.println(u.getName()+"的密码是"+u.getPassword());
			System.out.println(u.getName()+"的年龄是"+u.getAge());
		}
		//遍历方法二,数组
/*		String[] strArray = new String[users.size()];
		users.toArray(strArray);
		for(int i=0;i<strArray.length;i++){
			System.out.println(strArray[i]);
		}
		//遍历方法三,迭代器
		Iterator <User> ite = users.iterator();
		while(ite.hasNext()){
			System.out.println(ite.next());
		}*/
	}
}

User类输出(注意)
                              User@15db9742
                              ooo的密码是111
                              ooo的年龄是20
                              User@6d06d69c
                              uuu的密码是222
                              uuu的年龄是20

ForHashMap类
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class ForHashMap {

	public static void main(String[] args) {
		Map <String,User> map = new HashMap<String,User>();
		
		map.put("001", new User("ooo","111",20));
		map.put("002", new User("uuu","222",20));
		
		//遍历方法一,entrySet。推荐EntrySet遍历,特别是数据量大的时候
				for(Map.Entry<String,User> entry : map.entrySet()){
					System.out.println(entry.getKey()+" "+entry.getValue());
					System.out.println(entry.getKey()+"的名字是"+entry.getValue().getName());
				}
/*		//遍历方法二,keySet
		for(String key:map.keySet()){
			System.out.println(key+" "+map.get(key));
		}
		//遍历方法三,迭代器
		Iterator <Map.Entry<String,User>> ite = map.entrySet().iterator();
		while(ite.hasNext()){
			Entry<String, User> entry = ite.next();
			System.out.println(entry.getKey()+" "+entry.getValue());
		}*/
	}

}

ForHashMap类输出
                              001 User@15db9742
                              001的名字是ooo
                              002 User@6d06d69c
                              002的名字是uuu

集合使用的具体方法,集合使用的方法都是类似的,可以分为几个部分
增加:add()  addAll()等
删除:remove()  removeAll()  clear()等
获取:get()
长度:size()
判断:isEmpty()  contains()  containsAll()等
生成数组:toArray()
。。。。。。。。。
这些具体的使用方法,在项目中能够有机会使用一遍,便能记忆深刻

另外两点:1、泛型的使用保证了集合(容器)的类型安全
                  2、使用迭代器遍历,迭代器的使用的一大优点是不用关心容器的类型

源码

源码分析能更加理解集合,理解它的数据存储方式(特点)和具体方法的实现
源码分析这位前辈的剖析非常好了,它的连接:http://blog.csdn.net/column/details/collection.html?page=1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值