add()
方法向Collection中增加元素,如果Collection结构改变了,作为add()
方法的结果,将返回true。如果一个Set
的实例中已经存在了这个元素,那么不会重复增加,这个Set
实例的结构也不会发生变化。另一方面,如果在一个List
上调用这个方法,而这个List
已经存在了这个元素,那么这个List
将有两个这个元素。remove()
方法移除一个元素。如果Collection中存在这个元素并且被移除了,这个方法将返回true。如果元素不存在,将返回false。这是对单个元素的操作,对应操作多个元素还有addAll(),removeAll().retainAll()
方法正好和removeAll()
方法相反。不是移除所有给定参数Collection中元素,而是保留保留这些元素,移除其他的。
检测一个Collection是否包含一个确定的元素
contains()
和
containsAll()
方法。
Collection大小
你可以通过调用size()
方法来检测一个Collection的大小,”Size“表示Collection中的元素个数。
迭代一个Collection
你可以迭代collection中的所有元素,collection中包含的Iterator将完成这件事情,就像下面这样:
1 |
Collection collection = new HashSet(); |
2 |
//... add elements to the collection |
3 |
4 |
Iterator iterator = collection.iterator(); |
5 |
while (iterator.hasNext()){ |
6 |
Object object = iterator.next(); |
7 |
//do something to object; |
8 |
} |
泛型(Generic)
The Collection interface can be generified like this:
Collection<String> stringCollection = new HashSet<String>();
List
是一个接口,为了使用它,你必须实例化一个具体的实现,
Collection接口的所有方法在List接口里也适用
,你可以在下列List的实现中选择:
运行结果:public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> listA = new ArrayList<String>();
//尾部追加元素
listA.add("element 0");
listA.add("element 1");
listA.add("element 2");
//头部插入元素
listA.add(0, "element");
//追加指定collection多个元素到尾部
listA.addAll(new ArrayList());
//打印长度
System.out.println(listA.size());
// 如果列表包含指定的元素,则返回true
listA.contains("test");
//移除元素
listA.remove(0);
listA.remove("element 1");
//获取指定位置元素
listA.get(0);
// 用指定元素替换列表中指定位置的元素
listA.set(0, "set");
// 返回列表中首次出现指定元素的索引,如果列表不包含此元素,则返回 -1
listA.indexOf("lwc");
//access via new for-loop
for(Object object : listA) {
String element = (String) object;
System.out.println(element);
}
//清空
listA.clear();
System.out.println(listA.size());
}
Comparator comparator = new MyComparator(); SortedSet setB = new TreeSet(comparator);
package com.cplatform.sampling.util;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ArrayBQTest {
// 创建等待队列
BlockingQueue bqueue = new ArrayBlockingQueue(20);
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
ArrayBQTest test =new ArrayBQTest();
// TODO Auto-generated method stubs
ArrayBlockingQueue queue = new ArrayBlockingQueue(2);
Thread pthread = new Thread(test.new producerThread(queue));
pthread.start();
Thread c1thread = new Thread(test.new ConsumerThread(queue));
Thread c2thread = new Thread(test.new ConsumerThread(queue));
c1thread.start();
c2thread.start();
Thread.sleep(5000);
System.out.println("****p done****");
pthread.stop();
Thread.sleep(4000);
c1thread.stop();
c2thread.stop();
System.out.println("****over****");
}
class producerThread implements Runnable {
private ArrayBlockingQueue queue;
public producerThread(ArrayBlockingQueue queue){
this.queue =queue;
}
public void run() {
while(true){
try {
String temp = System.currentTimeMillis()+"";
queue.put(temp);
Thread.sleep(1*1000);
System.out.println(Thread.currentThread().getName() + "正在生产。。。"+temp);
} catch (InterruptedException e) {
}
}
}
}
class ConsumerThread implements Runnable {
private ArrayBlockingQueue queue;
public ConsumerThread(ArrayBlockingQueue queue){
this.queue =queue;
}
public void run() {
while(true){
try {
String res=(String) queue.poll();
Thread.sleep(2*1000);
System.out.println(Thread.currentThread().getName() + "正在消费。。。"+res);
} catch (InterruptedException e) {
}
}
}
}
}