java学习--容器(1)

容器(也就是集合collection)

数组相较于集合的缺点
• 长度必须在初始化时指定,且固定不变
• 数组采用连续存储空间,删除和添加效率低下
• 数组无法直接保存映射关系
• 数组缺乏封装,操作繁琐

位于java的工具包下 (java.util)
看一下家族
在这里插入图片描述

特点

• Collection 接口存储一组不唯一,无序的对象
• List 接口存储一组不唯一,有序(索引顺序)的对象
• Set 接口存储一组唯一,无序的对象
• Map接口存储一组键值对象,提供key到value的映射
Key 唯一 无序
value 不唯一 无序

它们各自的优缺点

• List
• 特点:有序 不唯一(可重复)

• ArrayList 线性表中的顺序表
• 在内存中分配连续的空间,实现了长度可变的数组
• 优点:遍历元素和随机访问元素的效率比较高
• 缺点:添加和删除需大量移动元素效率低,按照内容查询效率低,

• LinkedList 线性表中双向链表
• 采用双向链表存储方式。
• 缺点:遍历和随机访问元素效率低下
•优点:插入、删除元素效率比较高(但是前提也是必须先低效率查询才可。如果插入删除发 生在头尾可以减少查询次数)

  • List的常用方法
    • List相对Collection增加了关于位置操作的方法
  • 常用的遍历方法
    • for for-each Iterator迭代器
练习
public class TestGeneric {
	public static void main(String[] args) {
		
		MyClloction<String> mc =  new MyClloction<String>();//这里的第二个<String>可以省略

		mc.set("洛尘曦",0);
		String b = mc.get(0);
		System.out.println(b);
		
	}

}


class MyClloction<E>{
	Object [] objs = new Object[10];
	
	public void set(E e,int index) {
		objs[index] = e;
		
	}
	
	public E get(int index) {
		return (E)objs[index];
		
		
	}
	
}

输出

洛尘曦

**泛型通常用ETV表示,其实这里的泛型E类似于传参机制,他就表示返回String类型的数据,如果不用容器的话,在调用方法的时候应该进行强制类型转换。

不使用泛型,如下面的方式

public class TestGeneric {
	public static void main(String[] args) {
		
		MyClloction mc =  new MyClloction();//这里的第二个<String>可以省略

		mc.set("洛尘曦",0);
		String b = (String)mc.get(0);
		System.out.println(b);
		
	}

}


class MyClloction<E>{
	Object [] objs = new Object[10];
	
	public void set(Object e,int index) {
		objs[index] = obj;
		
	}
	
	public Object get(int index) {
		return objs[index];
		
		
	}
	
}
Collection的常用方法
	public static void main(String[] args) {
		
		test();
		
		
	}
	public static void test() {
		

		Collection<String> c = new ArrayList<>();
		c.size();//判断容器的大小
		c.isEmpty();//判断容器是否为空
		
		c.add("洛尘曦");
		c.add("上官易泽");
		System.out.println(c.contains("洛尘曦"));//容器中是否包含洛尘曦
		
		
		System.out.println(c);
		System.out.println(c.size());
		c.remove("洛尘曦");//会把容器中的洛尘曦移除
		c.clear();//移除所有
	}

无论是ArrayList 还是LinkedList它们的常用方法其实几乎一样
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值