JAVA泛型集合

泛型集合:
集合是一种数据结构,它保存其他对象的引用。
通常集合包含的引用,其对象都具有相同的类型。
集合框架接口声明了对不同集合类型执行的一般性操作,以下是一些框架集合的接口:
(1) Collection:集合层次中的根接口,它派生Set、Queue和List接口。
(2) Set:不包含重复值的集合。
(3) Queue:通常是建模排队的一个先入先出的集合,也可以指定其他的顺序。
(4) List:能够包含重复元素的集合。
(5) Map:将键与值相关联的集合,不能包含重复的键。
集合框架的类和接口是包含在java.util包的成员。

Collection:
Collection接口是集合层次的根接口,它派生出了Set、Queue和List接口,同时Collection接口提供了批量操作,这种操作可以用作集合的添加、清除和比较元素。
Collection接口还提供了一个返回Iterator(迭代器)对象的方法,它使得程序能够遍历集合并在迭代的过程中从集合删除元素。

Iterator:
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
Java中的Iterator功能比较简单,并且只能单向移动:
(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
(2) 使用next()获得序列中的下一个元素。
(3) 使用hasNext()检查序列中是否还有元素。
(4) 使用remove()将迭代器新返回的元素删除。
Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

列表:
列表是一个有序的Collection,它可以包含重复的元素。和数组的索引一样,List的索引也是从0开始的。
List除了继承自Collection的那些方法外,还提供了通过索引操作元素的方法、操作指定范围内元素的方法、搜索元素的方法,以及获得一个ListIterator访问元素的方法。
List接口由多个类组成,其中包括ArrayList类、LinkedList类和Vector类。
ArrayList类和Vector类基本上是相同的,它们实现的List接口的数组是大小可变的。默认情况下,ArrayList类不是同步的,而Vector类是同步的。有时我们向已经存在的ArrayList类或者Vector类插入元素的时候会效率非常的低,因为你要在List中间插入一个元素,那么这之后的元素都需要向后顺移一位,当这个已存在的数组相当大的时候,这个操作的效率也就会很低,这时候我们就需要使用LinkedList类。对于在集合中插入元素,LinkedList类具有非常高效的效率。

通常情况下,非同步集合比同步集合具有更好的性能,所以在不需要进行多线程的操作时,我们应该首选ArrayList。

ArrayList:

//创建ArrayList类 其数据类型为Integer
List list=new ArrayList();
//添加元素
list.add(19);
list.add(2);
list.add(3);
//遍历输出元素
for(Integer i:list)
{
System.out.println(i);
}
//移除第一个元素 索引是从0开始 所以remove(0)为删除第一个元素
list.remove(0);
//更改第一个元素的数值为66
list.set(0,66);
//排序
Collections.sort(list);

Vector:

 //创建Vector类 数据类型为Integer
List list=new Vector();
//添加元素
list.add(3);
list.add(22);
list.add(66);
//排序
Collections.sort(list);
//遍历输出所有元素
for(Integer i:list)
{
System.out.println(i);
}
//删除元素
list.remove(0);
//更改元素
list.set(0, 28);

LinkedList:

 //创建LinkedList类 其数据类型为Integer
List list=new LinkedList();
//添加元素
list.add(19);
list.add(2);
list.add(3);
//遍历输出元素
for(Integer i:list)
{
System.out.println(i);
}
//移除第一个元素 索引是从0开始 所以remove(0)为删除第一个元素
list.remove(0);
//更改第一个元素的数值为66
list.set(0,33);
将数组当作List和将List转换成数组:
 //声明一个字符串数组
String[] letter={"a","b","c","d"};
//把数组转换成List
LinkedList list=new LinkedList(Arrays.asList(letter));

list.add("e");
list.addFirst("A");
list.add(3,"f");
//将list转换成数组
letter=list.toArray(new String[list.size()]);

Collections类的集合方法:

sort:排序List的元素
binarySearch:定位List中的某个元素
reverse:颠倒List的元素顺序
shuffle:随机排序List的元素 (例如洗牌)
fill:将每一个List元素设置成特定对象的引用(将List的元素用别的值覆盖)
copy:将一个List中的引用复制到另一个List中
min:返回Collections中的最小元素
max:返回Collections中的最大元素
addAll:将数组中的全部元素追加到Collections中
frequency:计算集合中有多少个元素与指定的元素相等
disjoint:判断两个集合是否不存在相同的元素

Stack类:
Stack类拓展自Vector类,所有Vector类的全部公共接口都可以由Stack类的客户使用。
Stack类在java.util.Stack包中。Stack类的基本操作如下:
1、boolean empty() 测试堆栈是否为空。
2、Object peek( ) 查看堆栈顶部的对象,但不从堆栈中移除它。
3、Object pop( ) 移除堆栈顶部的对象,并作为此函数的值返回该对象。
4、Object push(Object element) 把项压入堆栈顶部。
5、int search(Object element) 返回对象在堆栈中的位置,以 1 为基数。

PriorityQueue类和Queue接口:
队列也是一种集合,通常队列是先进先出,即插入的元素是在队列的末尾,而删除的元素是在队列的开头。
Queue接口拓展了Collection接口并提供了额外的操作,用于在队列中插入、删除和检查元素。
PriorityQueue类实现了Queue接口,它按照Comparable元素的compareTo方法指定的自然顺序排序元素,也可以按照通过构造方法提供的Comparator对象排序元素。
PriorityQueue类提供的功能,能够按照排序的顺序在底层数据结构中执行插入操作,也能够从底层数据结构的前面执行删除操作。当将元素添加到PriorityQueue类的对象中时,它们按优先级顺序插入。这样具有最高优先级的元素就是从PriorityQueue中首先被删除的元素。
常见的PriorityQueue操作有offer、poll、peek、clear和size。
offer:插入元素
poll:删除优先级最高的元素
peek:获得优先级最高的那个元素的引用
clear:删除队列中的全部元素
size:获取队列中元素的数量

集合:
Set(集合)中不能包含重复的元素,因此如果导入的列表中包含有重复的元素,set会自动删除重复的元素。

映射:
Map(映射)将键与值联系在一起,键不能够重复,但是值可以有重复的。
如果Map中同时包含唯一键和唯一值,则称它为一一映射。
如果只有键是唯一的,那么就是多对一的映射。

Properties类:
Properties类是一个持久的hashtable,所以它能够将Properties对象写入输出流(例如一个文件),并且能够通过输入流重新读出。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值