collection 接口
Collection是最基本的集合接口.
所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection
List接口
有两种类型的list;
- ArrayList: 长于随机访问元素,但是在list的中间插入和移除元素时较慢.
- LinkedList:它通过代价较低的在List中间进行插入和删除操作,提供了优化的顺序访问,在随机访问元素方面相对较慢,但是它的特性较ArrayList更大
- 多按照插入的顺序保存元素
- 可以生成Iterator ,ListIterator
(双向移动)
public class ListIteration {
public static void main(String[] args) {
List<Pet> pets = Pets.arrayList(8);
ListIterator<Pet> it = pets.listIterator();
while(it.hasNext())
System.out.print(it.next() + ", " + it.nextIndex() +
", " + it.previousIndex() + "; ");
System.out.println();
// Backwards:
while(it.hasPrevious())
System.out.print(it.previous().id() + " ");
System.out.println();
System.out.println(pets);
it = pets.listIterator(3);
while(it.hasNext()) {
it.next();
it.set(Pets.randomPet());
}
System.out.println(pets);
}
} /* Output:
Rat, 1, 0; Manx, 2, 1; Cymric, 3, 2; Mutt, 4, 3; Pug, 5, 4; Cymric, 6, 5; Pug, 7, 6; Manx, 8, 7;
7 6 5 4 3 2 1 0
[Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug, Manx]
[Rat, Manx, Cymric, Cymric, Rat, EgyptianMau, Hamster, EgyptianMau]
*///:~
LinkedList 详细参考thinking in java 11章 7节
set 接口
- 不接受重复的元素
-
HashSet 提供最快的速度,而TreeSet保持元素处于排序状态,LinkedHashSet以插入顺序保持元素.
Map
- HashMap设计用来快速访问,TreeMap保持键'key'始终处于排序状态,LinkedHashMap则按照插入的顺序保存键,同时还保留了HashMap的查询速度(多是散列)
Queue
队列是一个东典型的先进先出的容器
LinkedList提供了方法以支持队列的行为,并且它实现了Queue接口,所以可以作为Queue的一种实现,向上转型为
Queue
public class QueueDemo {
public static void printQ(Queue queue) {
while(queue.peek() != null)
System.out.print(queue.remove() + " ");
System.out.println();
}
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<Integer>();
Random rand = new Random(47);
for(int i = 0; i < 10; i++)
queue.offer(rand.nextInt(i + 10));
printQ(queue);
Queue<Character> qc = new LinkedList<Character>();
for(char c : "Brontosaurus".toCharArray())
qc.offer(c);
printQ(qc);
}
} /* Output:
8 1 1 1 5 14 3 1 0 1
B r o n t o s a u r u s
*///:~
PriorityQueue
优先级队列,充许重复,最小的值捅有最高的优先级(空格比字线优先级高)
public class PriorityQueueDemo {
public static void main(String[] args) {
PriorityQueue<Integer> priorityQueue =
new PriorityQueue<Integer>();
Random rand = new Random(47);
for(int i = 0; i < 10; i++)
priorityQueue.offer(rand.nextInt(i + 10));
QueueDemo.printQ(priorityQueue);
List<Integer> ints = Arrays.asList(25, 22, 20,
18, 14, 9, 3, 1, 1, 2, 3, 9, 14, 18, 21, 23, 25);
priorityQueue = new PriorityQueue<Integer>(ints);
QueueDemo.printQ(priorityQueue);
priorityQueue = new PriorityQueue<Integer>(
ints.size(), Collections.reverseOrder());
priorityQueue.addAll(ints);
QueueDemo.printQ(priorityQueue);
String fact = "EDUCATION SHOULD ESCHEW OBFUSCATION";
List<String> strings = Arrays.asList(fact.split(""));
PriorityQueue<String> stringPQ =
new PriorityQueue<String>(strings);
QueueDemo.printQ(stringPQ);
stringPQ = new PriorityQueue<String>(
strings.size(), Collections.reverseOrder());
stringPQ.addAll(strings);
QueueDemo.printQ(stringPQ);
Set<Character> charSet = new HashSet<Character>();
for(char c : fact.toCharArray())
charSet.add(c); // Autoboxing
PriorityQueue<Character> characterPQ =
new PriorityQueue<Character>(charSet);
QueueDemo.printQ(characterPQ);
}
} /* Output:
0 1 1 1 1 1 3 5 8 14
1 1 2 3 3 9 9 14 14 18 18 20 21 22 23 25 25
25 25 23 22 21 20 18 18 14 14 9 9 3 3 2 1 1
A A B C C C D D E E E F H H I I L N N O O O O S S S T T U U U W
W U U U T T S S S O O O O N N L I I H H F E E E D D C C C B A A
A B C D E F H I L N O S T U W
*///:~
注:如果加入PriorityQueue中的对象是继承至Object,其对象要实现Comparable接口 || Comparator 接口
详见(http://sevenjava.iteye.com/blog/683481
)
分享到:
相关推荐
Dictionary比Collection慢好多; 采用了高精度计时器进行比较,可以精确到微秒; 添加速度快1-2倍 读取快3倍 删除有时快5倍 具体数据量不一样,CPU和电脑不同,结果也不同。 Dictionary,加20万条,用时2371.5783毫秒...
mybatis 多层级collection嵌套
Denise Milani Video Collection
集合框架包含collection和map的子类。其中collection包含list、set和queue。map包括hashmap、hashtable和treemap
This volume in The Netter Collection of Medical Illustrations (the CIBA "Green Books") has been expanded and revised by Drs. Christopher Rehbeck Kelly and Jaime Landman to capture current clinical ...
Collection集合简单测试 //添加元素c.add("孙悟空"); //删除指定元素c.remove(6);
mybatis中mapper文件resultMap中collection和association的使用,参考地址:https://blog.csdn.net/zhizhuodewo6/article/details/82863452
Mesh Deformation Full Collection.unitypackage
Telerik Collection for . net 2021是一个可靠的,强大的和最知名的集合。net语言程序员的开发人员,使他们能够创建交互式用户界面的进度开发和专业报告不同的平台,如桌面或移动。 它是一个全功能的应用程序提供了...
nik collection 4.0.7中文版是一款非常好用的创意照片编辑软件,软件内的新界面更现代、更吸引人、更实用,并且它还提供了对所有可用工具和预设的更快访问,因此您可以专注于最重要的事情或者找到自己的风格。...
The Garbage Collection Handbook The Art of Automatic Memory Management, Jones, Hosking, Moss, 2012
它应该与任何JS引擎,甚至IE6都兼容(尽管到目前为止还没有针对它进行过测试) 缩小collection-js的权重16KB,仅专注于集合。内容代码示例JS var List = Collection . List ;var Set = Collection . Set ;var ...
The Animation Collection..zip,动画集合。
前几天学习了collection的文档,里面主要是collection的基础知识,大神们自动忽略吧
UML files collection2
java Collection类整理
C++ Collection.zip
All Star Character Collection 5.2 Unity人物 全明星 30角色全动作模型.txt
mytabis 报错 Mapped Statements collection does not contain value for
Utilu IE Collection,IE 兼容工具包,包含了IE2.0-IE8 渲染引擎,并可以同时使用这些引擎。因为IE并至今还没有完全遵循W3C Web国际标准,适用于网页开发者进行兼容性测试。 Internet Explorer Collection包含的IE...