泛型的类型参数只能是类类型(包括自定义类)不能是基本数据类型
利用泛型可以定义泛型类、泛型方法、泛型接口
同一种泛型可以对应多个版本(因为类型参数是不确定的),不同版本的泛型类实例是不兼容的
泛型的类型参数可以使用extends语句,习惯上称为“有界类型”
泛型的类型参数还可以是通配符类型
Java集合是基于算法设计的高性能类集
Java集合主要接口有:Collection、List、Set和Map
迭代器接口用于遍历集合内部元素,具体有Iterator和ListIterator接口
JDK5.0提供了for-each语句,以方便集合遍历
ArrayList 一种可以动态增长和缩减的索引序列;
LinkedList 一种可以 在任何位置进行高效的插入和删除操作的有序序列
ArrayDeque 一种用循环数组实现的双端队列
HashSet 一种没有重复元素的无序集合
TreeSet 一种有序集
EnumSet 一种包含枚举类型的集
LinkedHashSet 一种可以记住元素插入次序的集
PriorityQueue 一种允许高效删除最小元素的集合
HashMap 一种存储键/值关联的数据结构
TreeMap 一种键值有序排列的映射表
EnumMap 一种键值属于枚举类型的映射表
LinkedHashMap 一种可以记住键/值项添加次序的映射表
WeakHashMap 一种其值无用武之地后可以被垃圾回收器回收的映射表
IdentityHashMap 一种用==,而不是用equals比较键值的映射表
import java.util.*;
public class LinkedListTest {
public static void main(String[] args) {
List<String> la = new LinkedList<>();
la.add("Amy");
la.add("Carl");
la.add("Erica");
List<String> lb = new LinkedList<>();
lb.add("Bob");
lb.add("Doug");
lb.add("Frances");
lb.add("Gloria");
ListIterator<String> aIter = la.listIterator();
Iterator<String> bIter = lb.iterator();
while (bIter.hasNext())
{
if (aIter.hasNext()) aIter.next();
{
aIter.add(bIter.next());
}
}
System.out.println(la);
bIter = lb.iterator();
while (bIter.hasNext())
{
bIter.next();
if (bIter.hasNext())
{
bIter.next();
bIter.remove();
}
}
System.out.println(lb);
la.removeAll(lb);
System.out.println(la);
}
}
数组和集合的相互转换:
public class CollectiontoArray {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("this ");
list.add("is ");
list.add("a ");
list.add("IT ");
list.add("tutorials ");
list.add("website. ");
String[] s1 = list.toArray(new String[0]);
for (int i = 0; i < s1.length; ++i) {
String contents = s1[i];
System.out.print(contents);
}
}
}
public class ArraytoCollection {
public static void main(String[] args) throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("How many elements you want add to the array:");
int n = Integer.parseInt(in.readLine());
String[] name = new String[n];
System.out.print("Enter your elements: ");
for (int i = 0; i < n; i++)
{
name[i] = in.readLine();
}
List<String> list = Arrays.asList(name);
System.out.println();
for (String li : list) {
String str = li;
System.out.print(str + " ");
}
}
}