Java基础学习(五)泛型与集合 2019.7.2

本文探讨了Java中的泛型特性,强调了泛型类型参数仅限于类类型,而非基本数据类型。通过泛型,可以创建泛型类、方法和接口。文章还介绍了有界类型的概念以及通配符类型的使用。Java集合框架的核心接口包括Collection、List、Set和Map,提供了如ArrayList、LinkedList等实现。此外,讲解了迭代器接口和for-each语句在集合遍历中的作用,以及各种特定类型的集合实现,如HashMap和TreeMap。
摘要由CSDN通过智能技术生成

泛型的类型参数只能是类类型(包括自定义类)不能是基本数据类型
利用泛型可以定义泛型类、泛型方法、泛型接口
同一种泛型可以对应多个版本(因为类型参数是不确定的),不同版本的泛型类实例是不兼容的
泛型的类型参数可以使用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 + " ");
		}
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值