Collection集合框架

Collection集合框架,第1张

Collection集合框架
package cn.ekgc.javasenior.day20210621;

import java.util.ArrayList;

public class ArrayListDemo01 {
	public static void main(String[] args) {
		
		// 创建一个 ArrayList 对象
		ArrayList arrayList = new ArrayList();
		// 要想获得 ArrayList 中已经存储了多少个元素的值,可以使用 size();
		int size = arrayList.size();
		System.out.println("此时 ArrayList 中所存储的元素个数是:" + size);
		// 如果要将某个数据存储到 ArrayList 中,可以调用 ArrayList 的 add()
		// 在使用 add() 添加元素时,可以不用关心此时数组的长度,ArrayList 会自动对 Object[] 进行维护
		arrayList.add("Hello");
		arrayList.add("World");
		arrayList.add(123);
		arrayList.add(98.5);
		arrayList.add("World");
		arrayList.add(true);
		
		// 在完成元素的添加之后,查看此时 ArrayList 的元素个数
		System.out.println("经过元素的添加之后,此时 ArrayList 的元素个数是:" + arrayList.size());
		// 要想从 ArrayList 中获得某个元素,可以使用该元素的下标,借助于 get() 来获得
		// 获得下标为 2 的元素的值
		int num = (int) arrayList.get(2);
		System.out.println("下标为 2 的元素的值是:" + num);
		// 如果需要将 ArrayList 中某个元素的值从数组中删除,可以借助于下标通过 remove() 实现
		arrayList.remove(3);
		System.out.println("将下标为 3 的元素的值移除后,数组的长度是:" + arrayList.size());
		// 要想获得某个元素在 ArrayList 中的下标,可以使用 indexOf() 来获得
		// 对于 indexOf() 在查找元素的时候,是按照从前往后进行查找,一旦找到,就返回该元素的下标
		int index = arrayList.indexOf("World");
		System.out.println("World 元素在 ArrayList 中的下标:" + index);
		// 如果通过 indexOf() 未找到相应元素,那么会返回 -1 表示为找到。
		System.out.println("world 元素在 ArrayList 中的下标:" + arrayList.indexOf("world"));
		// 如果需要从后往前进行查找,那么可以使用 lastIndexOf() 来实现
		System.out.println("使用 lastIndexOf() 从后往前查找元素的下标:" + arrayList.lastIndexOf("World"));
		// 如果要确定在 ArrayList 中是否存在某个元素,可以通过 contains() 来确定
		System.out.println("ArrayList 中是否存在元素 World:" + arrayList.contains("World"));
	}
}
package cn.ekgc.javasenior.day20210622;

import java.util.Arrays;
import java.util.List;

public class ForEachDemo {
	public static void main(String[] args) {
		// 对于 ArrayList 来说,其本质上就是一个数组,那么对于任意的一个数组,都能够变为 ArrayList
		// 创建一个 String[]
		String[] cities = {"渭南", "西安", "咸阳", "宝鸡"};
		// 要想将数组变为 ArrayList,则需要使用到 java.util.Arrays 的 asList() 实现
		List cityList = Arrays.asList(cities);
		// 使用 for 循环遍历 List 集合
		for (int i = 0; i < cityList.size(); i++) {
			// 将 i 作为下标,借助于 List 集合的 get() 获取当前元素
			String city = cityList.get(i);
			System.out.println(city);
		}
		// 在 JDK 5 就诞生了增强型 for 循环结构
		for (String city : cityList) {
			System.out.println("使用增强型 for 循环:" + city);
		}
		
	}
}
package cn.ekgc.javasenior.day20210621;

import java.util.linkedList;

public class linkedListDemo01 {
	public static void main(String[] args) {
		
		// 创建 linkedList 对象
		linkedList linkedList = new linkedList();
		// 由于 linkedList 和 ArrayList 都是 List 接口的实现类,导致两者有大量方法是相同的。
		// 要获得 linkedList 中所存储元素的个数,那么通过 size()
		System.out.println("此时 linkedList 中的元素个数是:" + linkedList.size());
		// 通过 add() 向 linkedList 的末尾追加元素
		linkedList.add("张涛");
		linkedList.add("袁帅杰");
		// 也可以通过下标向任意位置追加
		linkedList.add(1, "李卓");
		// linkedList 提供了向其头部和尾部进行追加元素
		linkedList.addFirst("李静平");
		linkedList.addLast("袁晓涛");
		System.out.println("追加完毕后,元素的个数是:" + linkedList.size());
		// 通过下标获得 linkedList 中所存储的元素
		System.out.println("获得 linkedList 中下标为 0 的元素:" + linkedList.get(0));
		System.out.println("获得 linkedList 中下标为 2 的元素:" + linkedList.get(2));
		// 获得 linkedList 的第一个和最后一个元素
		System.out.println("linkedList 中的第一个元素是:" + linkedList.getFirst());
		System.out.println("linkedList 中的最后一个元素是:" + linkedList.getLast());
		// 要想移除 linkedList 中的元素,则借助于下标,使用 remove 进行移除
		// 移除下标为 3 的元素
		linkedList.remove(3);
		// 移除第一个和最后一个元素
		linkedList.removeFirst();
		linkedList.removeLast();
		System.out.println(linkedList);
	}
}
package cn.ekgc.javasenior.day20210621;

import java.util.ArrayList;

public class LoopDemo {
	public static void main(String[] args) {
		// 创建 ArrayList 对象
		ArrayList arrayList = new ArrayList();
		// 由于 ArrayList 底层使用了 Object[] 类型的数组,那么是可以放入任意数据类型的元素的
		// 导致存储在 ArrayList 中的元素存在各种数据类型。那么在获取元素的时候,就无法确定该元素的数据类型。
		// 因此对于集合中所存储的元素并不是任意类型都可以,而是和数组一样,规定相应的数据类型时比较方便。
		// 因此需要规定存储集合中的元素的数据类型,那么在 JDK 5 产生了泛型的这一概念。
		// 泛型:形如 <数据类型> 来规范存入一个集合中的数据类型。
		// 要求所有的集合在创建的时候,都必须增加泛型,以约定所存储的数据类型。
		// 需要特别注意的是,泛型中的数据类型不能是基本数据类型。
		// Java 不属于纯面向对象语言,因为 Java 存在 8 个基本数据类型。
		// 所谓的纯面向对象语言,指的是所有的数据类型都能够通过 new 来创建其对象。
		// Java 之所以要存在 8 个基本数据类型,原因在于这 8 个基本数据类型的值会经常使用,为了能够高效率的使用,
		// 就将其直接存储到了栈内存,因此不需要进行 new 来创建,从而存储到堆内存中。
		arrayList.add("张涛");
		arrayList.add("李静平");
//		arrayList.add(250);
//		arrayList.add(true);
//		arrayList.add(new Student());
//		arrayList.add('男');
		// 使用 for 循环遍历 ArrayList
		for (int i = 0; i < arrayList.size(); i++) {
			// 由于有了泛型的约定,那么从这个集合中所提取的每个元素的数据累心就是统一的,那么不在需要强制类型转换
			String str = arrayList.get(i);
			System.out.println(str);
		}
	}
}
package cn.ekgc.javasenior.day20210622;

import java.util.HashSet;
import java.util.Iterator;

public class SetDemo01 {
	public static void main(String[] args) {
		
		// 创建 HashSet 对象
		HashSet hashSet = new HashSet();
		// 要想向 HashSet 中存放元素,那么通过 add() 来实现
		hashSet.add("张涛");
		hashSet.add("李静平");
		hashSet.add("李卓");
		hashSet.add("党奥");
		// 通过 size() 获得此时 HashSet 中所拥有的元素数量
		System.out.println("此时 HashSet 中所拥有的元素数量是:" + hashSet.size());
		// 向 HashSet 中增加相同的元素
		hashSet.add("张涛");
		hashSet.add("李静平");
		System.out.println("经过添加相同元素后,HashSet 的元素个数是:" + hashSet.size());
		// 要想删除一个元素,通过 remove 来进行删除
		// 对于 List 集合来说,在移除元素时,是通过下标进行的,
		// 由于 Set 集合时无序的,那么就不存在下标这个概念,那么就只能通过元素本身进行删除
		hashSet.remove("党奥");
		System.out.println("移除一个元素之后,HashSet 的元素个数是:" + hashSet.size());
		// 通过 contains 来确定是否包含该元素
		System.out.println("HashSet 中是否包含 李卓123:" + hashSet.contains("李卓123"));
		// 要想获得 Set 集合中的元素,是无法通过下标获得的,只能够进行循环遍历,判断是否是需要的元素
		// 如果使用普通的 for 循环,是无法办到的,因为普通的 for 循环本质上还是借助于下标获得元素,
		// 因为为了能够使用到 for 循环遍历 Set 集合,于是在 JDK 5 推出了增强型 for 循环,也成为了 for each 循环
		for (String name : hashSet) {
			System.out.println("使用增强型 for 循环循环 HashSet:" + name);
		}
		// 对于循环集合,提供了使用迭代器 Iterator 的方式来进行。
		// 通常可以使用 Iterator 来迭代遍历 Set 集合
		// 调用 Set 集合的 iterator() 将 Set 集合的所有元素变为一个 Iterator 对象
		Iterator iterator = hashSet.iterator();
		// 通过 Iterator 对象的 hasNext() 判断此时是否还有元素
		// 由于元素的个数是无法确定的,因此使用 while 循环
		while (iterator.hasNext()) {
			// 当 iterator 的 hasNext() 判断为 true 的时候,则说明迭代器中还有元素
			// 借助于 Iterator 的 next() 将该元素取出进行使用
			String name = iterator.next();
			System.out.println("使用迭代器的方式获得元素:" + name);
		}
	}
}
package cn.ekgc.javasenior.day20210622;

import java.util.HashMap;
import java.util.Set;

public class HashMapDemo01 {
	public static void main(String[] args) {
		
		// 创建 HashMap 对象
		HashMap hashMap = new HashMap();
		// 要想获得此时 HashMap 中的 key-value 的个数,通过 size() 能够获得
		System.out.println("此时 HashMap 中的 key-value 组合个数:" + hashMap.size());
		// 通过 put(key, value) 来向 HashMap 中存储 key-value 组合
		hashMap.put("PRC", "中华人民共和国");
		hashMap.put("USA", "美利坚合众国");
		hashMap.put("RU", "俄罗斯联邦");
		hashMap.put("RF", "法兰西共和国");
		hashMap.put("UK", "大不列颠及北爱尔兰联合王国");
		
		System.out.println("经过 put() 存放元素之后,此时 HashMap 中的值:" + hashMap.size());
		
		// 向 HashMap 中存储一个 key 相同的组合
		hashMap.put("USA", "灯塔之国");
		System.out.println("在存放了相同 key 的组合之后,此时 HashMap 中的值:" + hashMap.size());
		// 要想获得存储在 HashMap 中的 value,则需要通过 key 来获得
		String usa = hashMap.get("USA");
		System.out.println("USA - " + usa);
		// 要想移除某个 key-value 组合,那么借助于 key 来实现
		hashMap.remove("RF");
		System.out.println("移除元素之后,HashMap 中的值的个数:" + hashMap.size());
		// 通过 key = RF 来获得相应的元素
		// 如果 Map 没有对应的 key,那么通过这个 key 所获得的 value 的值是 null。
		System.out.println("RF - " + hashMap.get("RF"));
		// 循环遍历 Map 集合中的每个 key-value 组合。
		// 对于循环遍历 Map 集合,有以下两种思路:
		// 1、由于 Map 集合中的 value 是通过 key 来获得的,如果能够循环遍历 Map 集合的 key
		// 那么就可以借助于 key 来获取每一个 value
		// 对于 Map 集合 key,是可以单独形成一个 Set 集合的。
		Set keySet = hashMap.keySet();
		// 对于变成 Set 集合的 key 来说,就可以使用增强型 for 循环来实现
		for (String key : keySet) {
			// 获得 key 之后,就可以借助于 Map 的 get 来获取对应的 value
			String value = hashMap.get(key);
			System.out.println(key + " : " + value);
		}
		// 要想判断 HashMap 中是否存在某个 key,可以通过 containsKey 来判断
		System.out.println("HashMap 是否存在 key = RF:" + hashMap.containsKey("RF"));
		// 要想直接判断是否存在 value,则通过 containsValue
		System.out.println("HashMap 是否存在 value = 美利坚合众国:" + hashMap.containsValue("美利坚合众国"));
	}
}

 

 

 

 

 

 

 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5660853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存