Java OPP 集合框架

Java OPP 集合框架

1、Java集合框架包含的内容

如图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传Java OPP 集合框架_第1张图片

  • 接口:代表集合的集合抽象数据类型,在图中以虚线框表示,如Collection、List、Set、Map、Iterator。
  • 实现:集合框架中接口的具体实现,在图中实线框表示,粗实线框表示最常用的实现,如ArrayList、LinkedList、HashMap、HashSet。

在图中可以清楚地看出Java集合框架中的两大类接口:Collection和Map。其中.Collection又有两个子接口:List和Set。所以通常说Java集合框架共有三大类接口:List,Set和Map。它们共同点都是集合接口。

  • Collection 接口存储一组不唯一(允许重复),无序的对象
  • Set接口继承Collection接口,存储一组唯一(不允许重复)、无序的对象。
  • List接口继承Collection接口,存储一组不唯一(允许重复)、有序(以元素插入的次序来放置元素,不会重新排序)的对象
  • Map接口存储一组成对的键-值,提供key(键)到value(值)的映射。Map中的key不要求有序,不允许重复,,value同样不允许有序,但允许重复
  • Iterator接口是负责定义访问和遍历元素的接口

2、List接口

  • ArrayList对数组进行了封装,实现了长度可变的数组。Array存储方式和数组相同,都是在内存中分配连续的空间。优点在于遍历元素和随机访问元素的效率比较高
  • LinkedList采用链表存储方式,优点在于插入,删除元素效率比较高,它提供了额外的addFirst()、addLast()、removeFirst()和removerLast()等方法,可以在LinkedList的首部或尾部进行插入或删除操作。这些可以使得LinkedList可被用作堆栈(stack)或者队列(queue)。

2.1 ArrayList集合类

ArrayList实现该需求的具体步骤如下:

  1. 创建多个对象
  2. 创建ArrayList集合对象,并把多个对象放入其中
  3. 输出集合中的数量
  4. 通过遍历集合显示信息
方法名称 说明
boolean add(Object o) 在列表末尾顺序添加元素,从0开始
void add(int index,Object o) 在指定的索引位置元素,原索引位置及其后面的元素依次后移
int size() 换回列表中的元素个数
Object get(int index) 返回指定索引位置处的元素
boolean contains(Object o) 判断列表是否存在指定元素
boolean remove(Object o) 从列表中删除元素
Object remove(int index) 从列表删除指定元素,起始位置从0开始

语法:

List dogs = new ArrayList();

2.2 LinkedList集合类

方法名称 说明
void addFirst(Object o) 在列表的首部添加元素
void addLast(Obect o) 在列表的末尾添加元素
Object getFirst() 返回列表中的第一个元素
Object getLast() 返回列表中的最后一个元素
Object removeFirst() 删除并返回列表中的第一个元素
Object removerLast() 删除并返回列表中的最后一个元素

语法:

LinkedList dogs = new LinkedList();

3、Map接口

3.1 HashMap集合类

方法名称 说明
Object put(Object key Object value) 以键-值的方式进行储存
Object get(Object key) 根据键返回相关联的值,若不存在指定的键,则返回null
Object remover(Object key) 删除指定的键映射的键-值
int size() 返回元素个数
Set keySet() 返回键的集合
Collection values() 返回值的集合
boolean isEmpty() 若不存在键-值映射关系,则返回true
void clear() 从此映射中移除所有映射关系

语法:

Map countries = new HashMap();

4、迭代器Iterator

boolean hasNext() :判断是否存在另一个可访问的元素。

Object next():返回要访问的下一个元素。

4.1 使用Iterator遍集合类

代码:

public class Test5 {
     
	public static void main(String[] args) {
     
		Dog ououDog = new Dog("欧欧","雪拉瑞");
		Dog yayaDog = new Dog("亚亚","雪拉瑞");
		Dog meimeiDog = new Dog("美美","拉布拉多");
		Dog feifeiDog = new Dog("菲菲","拉布拉多");
		Map dogMap = new HashMap();
		dogMap.put(ououDog.getName(),ououDog);
		dogMap.put(yayaDog.getName(),yayaDog);
		dogMap.put(meimeiDog.getName(),meimeiDog);
		dogMap.put(feifeiDog.getName(),feifeiDog);
		
		System.out.println("使用Iterator遍历,"+"所有狗狗的昵称和品种分别是:");
		Set keys = dogMap.keySet();//获取key的集合
		Iterator it = keys.iterator();//获取Iterator对象
		while (it.hasNext()) {
     
			String key = (String) it.next();//取出key
			Dog dog = (Dog)dogMap.get(key);//根据key取出对应的值
			System.out.println(key+"\t"+dog.getStrain());
		}
	}
}

5、泛型集合的应用

泛型集合的应用

public class Test6 {
     
	public static void main(String[] args) {
     
		Dog ououDog = new Dog("欧欧","雪拉瑞");
		Dog yayaDog = new Dog("亚亚","雪拉瑞");
		Dog meimeiDog = new Dog("美美","拉布拉多");
		Dog feifeiDog = new Dog("菲菲","拉布拉多");
		List<Dog>dogs = new ArrayList<Dog>();//标记元素类型
		dogs.add(ououDog);
		dogs.add(yayaDog);
		dogs.add(meimeiDog);
		dogs.add(2 , feifeiDog);//添加feifeiDog到指定位置
	
		Dog dog3 = dogs.get(2);
		System.out.println("第三个狗狗的信息如下:");
		System.out.println(dog3.getName()+"\t"+dog3.getStrain());
		System.out.println("\n所有狗狗的信息如下:");
		for (Dog dog:dogs) {
     //无须类型强制转换
			System.out.println(dog.getName()+"\t"+dog.getStrain());
		}
	}
}

6、总结

集Java的集合框架中的两个类接口,即Collection 和Map。其中Collection有两个子接口,即List和Set。区别如下:

  • Collection 接口存储一组不唯一(允许重复),无序的对象
  • Set接口继承Collection接口,存储一组唯一(不允许重复)、无序的对象。
  • List接口继承Collection接口,存储一组不唯一(允许重复)、有序(以元素插入的次序来放置元素,不会重新排序)的对象
  • Map接口存储一组成对的键-值,提供key(键)到value(值)的映射。Map中的key不要求有序,不允许重复,,value同样不允许有序,但允许重复

ArrayList和数组采用相同的方式存储,它的优点在与遍历元素和随机访问元素的效率比较高。LinkedList采用链表存储方式,优点在与插入,删除元素时效率比较高。

HashMap是最常见的Map实现类,它的存储方式是哈希表,优点是查询指定元素效率高

Iterator为集合而生,专门实现集合的遍历。它隐藏了各种集合实现类的内部细节。提供了遍历的统一编程接口

Java中共有八个包装类:Byte、Short、Integer、Long、Float、Double、Boolean、Charcter

Map实现类,它的存储方式是哈希表,优点是查询指定元素效率高

Iterator为集合而生,专门实现集合的遍历。它隐藏了各种集合实现类的内部细节。提供了遍历的统一编程接口

Java中共有八个包装类:Byte、Short、Integer、Long、Float、Double、Boolean、Charcter

你可能感兴趣的:(C#语言)