JAVA笔记:Java 类集总结(一、Collection接口及相关)

Java类集、框架介绍

框架:类库的集合

类集实际上是一个动态的对象数组,其中的对象数组可以任意扩充,丰富。
类集的特征:这种框架是高性能的,同时必须允许不同类型的类集以相同的方式和高度互操作方式工作,同时要容易扩展和修改。

集合框架中的很多类的功能是相似的,所以用接口来规范类。

类集框架主要接口:
JAVA笔记:Java 类集总结(一、Collection接口及相关)_第1张图片



Collection接口的继承关系









Collection接口的定义

Collection是保存单值集合的最大父接口。
Collection接口的定义格式:public interface Collection <E> extends Iterable <E>
同时JDK 1.5之后为Collection接口增加了泛型声明。
所有的类集操作都保存在java.util包中。


Collection接口的方法定义

JAVA笔记:Java 类集总结(一、Collection接口及相关)_第2张图片



在一般的开发中,很少直接使用Collection接口进行开发,通常使用的是它的子接口,主要包括:
List:可以存放重复的内容
Set:不能存放重复的内容,所有重复的内容是靠hashCode()和equals()两个方法区分的
Queue:队列接口
SortedSet:可以对集合中的数据进行排序

List接口

List 中可以存放任意的数据,在List接口中内容允许重复。
List接口中的常用子类:ArrayList。

定义使用实例:
import java.util.ArrayList ;
import java.util.List ;
import java.util.Collection ;
public class ArrayListDemo01{
	public static void main(String args[]){
		List<String> allList = null ;
		Collection<String> allCollection = null ;
		allList = new ArrayList<String>() ;	// 指定操作的泛型为String
		allCollection = new ArrayList<String>() ;	// 指定一个集合
		allList.add("Hello") ;	// 此方法由Collection接口而来
		allList.add(0,"World") ;	// 在第一个位置上添加新的内容
		System.out.println(allList) ;
		allCollection.add("LXH") ;	// 向Collection中加入内容
		allCollection.add("www.mldn.cn") ;
		allList.addAll(allCollection) ;
		allList.addAll(0,allCollection) ;
		System.out.println(allList) ;
	}
};

常用方法使用实例:
import java.util.ArrayList ;
import java.util.List ;
public class ArrayListDemo05{
	public static void main(String args[]){
		List<String> allList = null ;
		allList = new ArrayList<String>() ;	// 指定操作的泛型为String
		System.out.println("集合操作前是否为空?" + allList.isEmpty()) ;
		allList.add("Hello") ;	// 此方法由Collection接口而来
		allList.add(0,"World") ;	// 在第一个位置上添加新的内容
		allList.add("MLDN") ;	// 向Collection中加入内容
		allList.add("www.mldn.cn") ;
		System.out.println(allList.contains("Hello")?"\"Hello\"字符串存在!" : "\"Hello\"字符串不存在!") ;
		List<String> allSub = allList.subList(2,3) ;	// 字符串截取
		System.out.println("集合截取:") ;
		for(int i=0;i<allSub.size();i++){
			System.out.print(allSub.get(i) + "、") ;
		}
		System.out.println("MLDN字符串的位置:" + allList.indexOf("MLDN")) ;
		System.out.println("集合操作后是否为空?" + allList.isEmpty()) ;
	}
};

此外List子类还有一个挽救的子类:Vector,但是属于较旧的类,采用同步操作方法,性能比较低,属于线程安全的操作类,而ArrayList类是一个新的操作类,采用异步操作的方法,性能更高。

LinkedList类

LinkedList表示的是一个链表的操作类,此类操作如下:

import java.util.LinkedList ;
public class LinkedListDemo01{
	public static void main(String args[]){
		LinkedList<String> link = new LinkedList<String>() ;
		link.add("A") ;	// 增加元素
		link.add("B") ;	// 增加元素
		link.add("C") ;	// 增加元素
		System.out.println("初始化链表:" + link) ;
		link.addFirst("X") ;	// 在开头增加数据
		link.addLast("Y") ;		// 在结尾增加数据
		System.out.println("增加头和尾之后的链表:" + link) ;
	}
};

Set接口

Set接口也是Collection的子接口,但是与Collection接口和List接口不同,Set接口中不能加入重复的元素,所以Set接口也无法像List接口那样进行双向输出。

Set接口有两个主要子类,一个是散列存放,HashSet:
import java.util.HashSet ;
import java.util.Set ;
public class HashSetDemo01{
	public static void main(String args[]){
		Set<String> allSet = new HashSet<String>() ;
		allSet.add("A") ;	// 增加内容
		allSet.add("B") ;	// 增加内容
		allSet.add("C") ;	// 增加内容
		allSet.add("C") ;	// 重复内容
		allSet.add("C") ;	// 重复内容
		allSet.add("D") ;	// 增加内容
		allSet.add("E") ;	// 增加内容
		System.out.println(allSet) ;
	}
};

另外一个是有序存放,TreeSet:
import java.util.TreeSet ;
import java.util.Set ;
public class TreeSetDemo01{
	public static void main(String args[]){
		Set<String> allSet = new TreeSet<String>() ;
		allSet.add("C") ;	// 增加内容
		allSet.add("C") ;	// 重复内容
		allSet.add("C") ;	// 重复内容
		allSet.add("D") ;	// 增加内容
		allSet.add("B") ;	// 增加内容
		allSet.add("A") ;	// 增加内容
		allSet.add("E") ;	// 增加内容
		System.out.println(allSet) ;
	}
};

SortedSet接口

一般开头是Sorted的基本上都是排序的接口。
实例:
import java.util.SortedSet ;
import java.util.TreeSet ;
public class TreeSetDemo05{
	public static void main(String args[]){
		SortedSet<String> allSet = new TreeSet<String>() ;	// 
		allSet.add("A") ;	// 增加内容
		allSet.add("B") ;	// 增加内容
		allSet.add("C") ;	// 增加内容
		allSet.add("C") ;	// 增加内容
		allSet.add("C") ;	// 增加内容
		allSet.add("D") ;	// 增加内容
		allSet.add("E") ;	// 增加内容
		System.out.println("第一个元素:" + allSet.first()) ;
		System.out.println("最后一个元素:" + allSet.last()) ;
		System.out.println("headSet元素:" + allSet.headSet("C")) ;
		System.out.println("tailSet元素:" + allSet.tailSet("C")) ;
		System.out.println("subSet元素:" + allSet.subSet("B","D")) ;
	}
};


Iterator接口

集合输出的标准操作:在使用集合输出的时候要明确最标准的操作,就是要使用Iterator接口。
Iterator接口是迭代输出接口,对元素一个个进行判断,如果有内容就进行输出。
实例:
import java.util.List ;
import java.util.ArrayList ;
import java.util.Iterator ;
public class IteratorDemo01{
	public static void main(String args[]){
		List<String> all=  new ArrayList<String>() ;	// 
		all.add("hello") ;
		all.add("_") ;
		all.add("world") ;
		Iterator<String> iter = all.iterator() ;	// 为Iterator接口实例化
		while(iter.hasNext()){	// 判断是否有内容
			System.out.println(iter.next()) ;	// 输出内容
		}
	}
};


foreach接口

foreach不仅仅支持数组的输出,同时也支持集合的输操作。

实例:
import java.util.ArrayList; 
import java.util.List; 
public class ForeachDemo01{
	public static void main(String args[]){
		List<String> all = new ArrayList<String>() ;
		all.add("hello") ;
		all.add("_") ;
		all.add("world") ;
		for(String str:all){
			System.out.print(str + "、") ;
		}
	}
};





你可能感兴趣的:(JAVA笔记:Java 类集总结(一、Collection接口及相关))