Java集合框架

1 篇文章 0 订阅

集合框架——为什么需要?(动态增删改查)
我们想,如果有这样一种数组,它可以动态的改变就好了,java的设计者为我们提供了一系列的集合类,我们来看看:
在这里插入图片描述

---|Collection: 单列集合
	---|List: 有存储顺序, 可重复
		---|ArrayList:	数组实现, 查找快, 增删慢
			            由于是数组实现, 在增和删的时候会牵扯到数组
						增容, 以及拷贝元素. 所以慢。数组是可以直接
						按索引查找, 所以查找时较快
		---|LinkedList:	链表实现, 增删快, 查找慢
						由于链表实现, 增加时只要让前一个元素记住自
						己就可以, 删除时让前一个元素记住后一个元
						素, 后一个元素记住前一个元素. 这样的增删效
						率较高但查询时需要一个一个的遍历, 所以效率
						较低
		---|Vector:	和ArrayList原理相同, 但线程安全, 效率略低
					和ArrayList实现方式相同, 但考虑了线程安全问
					题, 所以效率略低
					
		性能:ArrayList = LinkedList > Vector
		
	---|Set: 无存储顺序, 不可重复
		---|HashSet 内容无序 不可重复 支持null
		---|TreeSet 内按字典序 不可重复 不支持null
		---|LinkedHashSet 带存储顺序 不可重复 
		
		性能:HashSet  > TreeSet > LinkedHashSet
		
---| Map: 键值对 (key,value) key的特点是无序的,不可以重复的,通过唯一的key拿到唯一的value。
	---|HashMap 非线程安全,高效,key无序 key支持null 
	---|TreeMap key按按字典序 key不支持null 
	---|HashTable 线程安全,低效,key不支持null 
	---|LinkedHashMap

集合框架——使用
上面的图可以看出java集合类主要有一下几种:
List结构的集合类:
ArrayList类,LinkedList类,Vector类,Stack类

Map结构的集合类
HashMap类,Hashtable类

Set结构的集合类
HashSet类,TreeSet类

Queue结构的集合
Queue接口

演示Java集合的用法

public class Clerk {
	private String name;
	private int age;
	private float sal;
	public Clerk(String name,int age,float sal) {
		this.name=name;
		this.age=age;
		this.sal=sal;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public float getSal() {
		return sal;
	}
	public void setSal(float sal) {
		this.sal = sal;
	}
	
}

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList al=new ArrayList();
//		System.out.println("al大小"+al.size());
		
		//创建一个职员
		Clerk clerk1=new Clerk("宋江", 50, 1000);
		Clerk clerk2=new Clerk("吴用", 45, 1200);
		Clerk clerk3=new Clerk("林冲", 35, 1300);
		
		//将clerk加入到al中
		al.add(clerk1);
		al.add(clerk2);
		al.add(clerk3);
		
		//遍历所有集合里的对象
		for(int i=0;i<al.size();i++) {
			Clerk temp=(Clerk)al.get(i);
			System.out.println("名字="+temp.getName());
		}
		
		//如何从al中删除一个对象
		al.remove(1);
		System.out.println("=====删除吴用=====");
		
		for(int i=0;i<al.size();i++) {
			Clerk temp=(Clerk)al.get(i);
			System.out.println("名字="+temp.getName());
		}
	}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值