欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java__单列集合Collection中List接口与Set接口的简单应用

程序员文章站 2022-06-13 18:08:05
...

Java__单列集合Collection中List接口与Set接口的简单应用

集合:集合是java中提供的一种容器,可以用来存储多个数据。
集合和数组都是容器,其区别主要有:
1、数组的长度是固定的。集合的长度是可变的。
2、数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。

集合按照其存储结构可以分为两大类,分别是单列集合和双列集合,本章主要讲单列集合Collection。
用Collection coll = new ArrayList();多态方式,直接创建一个等待添加新数据的空集合。相应操作看下列代码输出注释。

public static void collectionMethod() {
		Collection coll = new ArrayList();
		coll.add("good");
		coll.add("boy");
		coll.add(123);
		System.out.println("coll中的元素:"+coll);
		Collection coll2 = new ArrayList();
		coll2.add("good");
		coll2.add("NewBird");
		System.out.println("coll2中的元素:"+coll2);
		System.out.println("判断good是否在coll中:"+coll.contains("good"));
		coll.remove(123);
		System.out.println("移除元素123:"+coll);
		coll.removeAll(coll2);
		System.out.println("移除coll与coll2的交集元素"+coll);
		coll.clear();
		System.out.println("清空coll中的元素:"+coll);
		System.out.println("判断coll是否为空:"+coll.isEmpty());
	}

单列集合有两个子接口分别为:List和Set;他们之间的区别:List的特点是元素有序、元素可重复,Set的特点是元素无序,而且不可重复。List主要实现的是ArrayList和LinkedList,Set主要实现的有HashSet和TreeSet。
List以ArrayList为例:

public static void arrayListMethod() {
		List list = new ArrayList();
		list.add("小狗");
		list.add("小猫");
		list.add("小熊");
		System.out.println("list中元素:"+list);
		/**
		 * add(要插入的下标,元素)
		 */
		list.add(2, "小豹子");
		System.out.println("插入“小豹子”到下标为2的地方:"+list);
		// 迭代器Iterator
		ListIterator it = list.listIterator();

		// 遍历

		for(;it.hasNext();) {
		//将下标为1的元素修改为“小鹿”
			list.set(1, "小鹿");
			System.out.print(it.next()+"\t");
		}

运行结果:

list中元素:[小狗, 小猫, 小熊]
插入“小豹子”到下标为2的地方:[小狗, 小猫, 小豹子, 小熊]
小狗	小鹿	小豹子	小熊

HashSet和TreeSet的简单了解:

public static void SetMethod() {
	Set set = new TreeSet();
	set.add("abc");
	set.add("acb");
	set.add("bac");
	set.add("bca");
	System.out.println("自然顺序排列Set"+set);	
	Set set2 = new HashSet();
	set2.add("小虹");
	set2.add("小兰");
	set2.add("小乔");
	set2.add("小白");
	set2.add("小兰");
	System.out.println("无序排列Set2"+set2);	
}
运行结果:

```java
自然顺序排列Set[abc, acb, bac, bca]
无序排列Set2[小虹, 小白, 小兰, 小乔]

集合中的接口导入都是在util包下面的故导入方式为import java.util.+接口;
最后总结:ArrayList和LinkedList的区别:
1、ArrayList底层是数组结构,查询和修改快,时间复杂度为1。
2、LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢,时间复杂度为n。
共同点:都是线程不安全的。