集合概述:

Collection接口和Iterator接口:

Collection中的主要方法如下:

方法名称方法概述
boolean add(Object o)该方法向集合中添加一个元素,成功返回true
boolean addAll(Collection c)该方法将集合C中的元素添加到指定集合中,成功返回true
void clear()清除集合中的元素
boolean contains(Object o)返回集合里是否包含指定元素
boolean containAll(Collection c)返回集合中是否包含集合c里的所有元素
boolean isEmpty()返回集合是否为空
Iterator iterator()返回一个Iterator对象,用于遍历集合里的元素
boolean remove(Object o)删除集合中的指定元素
boolean removeAll(Coolection c)从指定集合中删除所包含的c集合中的全部元素
boolean retailAll(Coolection c)从集合中删除集合中不包含的元素
int size()返回集合中元素的个数
Object[] toArray()该方法把集合转化成一个数组
package cn.itcast.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator; import org.junit.jupiter.api.Test; public class CollectionTest { @Test
public void testCollection(){
Collection c=new ArrayList();
c.add("孙悟空");
c.add(6);
System.out.println("c集合的元素个数为"+c.size()); c.remove(6);
System.out.println("c集合的元素个数为"+c.size()); System.out.println("c集合中是否包含孙悟空"+c.contains("孙悟空"));
c.add("javaee实战");
System.out.println("c集合中的元素"+c); Collection books=new HashSet(); books.add("疯狂java讲义");
books.add("javaee实战"); System.out.println("c集合是否完全包含books集合"+c.containsAll(books)); c.removeAll(books); System.out.println("c集合中的元素"+c); c.clear(); System.out.println("c集合中的元素"+c); books.retainAll(c); System.out.println("books集合中的元素:"+books); } @Test
public void IteratorTest() {
Collection<String> c=new ArrayList<String>();
c.add("java编程思想");
c.add("疯狂java讲义");
c.add("数据结构与算法");
Iterator it=c.iterator();
while(it.hasNext()) {
String book=(String) it.next();
System.out.println(book);
if(book.equals("疯狂java讲义")) {
it.remove();
}
book="测试字符串";
}
System.out.println(c);
} }

  

上述代码主要展示了Collection的常用方法

testCollection方法的执行结果为:

c集合的元素个数为2
c集合的元素个数为1
c集合中是否包含孙悟空true
c集合中的元素[孙悟空, javaee实战]
c集合是否完全包含books集合false
c集合中的元素[孙悟空]
c集合中的元素[]
books集合中的元素:[]

IteratorTest方法的执行结果为:

java编程思想
疯狂java讲义
数据结构与算法
[java编程思想, 数据结构与算法]

  

Set集合:

Set三个常用实现类:

HashSet:

概述:

特点:

存储数据原理:

注意点:

hashCode方法的重写规则:

LinkedHashSet:

概述:

TreeSet:

方法名称方法概述
Comparator comparator()如果 Tree Set采用了定制排序,则该方法返回定制排序所使用的Comparator;如果 TreeSet采用了自然排序,则返回nul
Object first()返回集合中的第一个元素
Object last()返回集合中的最后一个元素
Object lower(Object e)

返回集合中位于指定元素之前的元素(即小于指定元素的最大元素,参考元素不需要是集合中的元素)

Object higher(Object e)返回集合中位于指定元素之后的元素
SortedSet subSet(Object fromElement,Object toElement)  返回此Set的子集合,范围从 fromElement(包含)到 toElement(不包含)。
SortedSet headSet(Object toElement)返回此Set的子集,由小于 toLerent的元素组成。
SortedSet tailSet(Object fromElement)回此Set的子集,由大于或等于 fromElement的元素组成。
package cn.itcast.collection;

import java.util.TreeSet;

public class TreeSetTest {

	public static void main(String[] args) {

		TreeSet nums=new TreeSet();
nums.add(5);
nums.add(2);
nums.add(10);
nums.add(-9); System.out.println(nums); System.out.println(nums.first());
System.out.println(nums.last());
System.out.println(nums.headSet(4));
System.out.println(nums.tailSet(5));
System.out.println(nums.subSet(2, 8));
} }

 

运行结果:

[-9, 2, 5, 10]
-9
10
[-9, 2]
[5, 10]
[2, 5]

上述代码展示了TreeSet的常用方法

各个Set集合的性能分析:

1、Hash Set和 TreeSet是Set的两个典型实现,到底如何选择 Hash Set和 Tree Set呢? HashSet的性能总是比 TreeSet好(特别是最常用的添加、查询元素等操作),因为 TreeSet需要额外的红黑树算法来维护有Set时,才应该使用 TreeSet,否则都应该使用 HashSet。

2、HashSet还有一个子类:LinkedHash Set,对于普通的插入、删除操作, LinkedHashSet比 HashSet要略微慢一点,这是由维护链表所带来的额外开销造成的,但由于有了链表,遍历 LinkedHashSe会更快。

List集合:

定义:

list集合中特有的方法:

方法名称

方法描述

void add(int index,Object element)

将元素element插入到集合的指定位置

boolean addAll(int index,Collection c)

将集合c所包含的所有元素插入到List集合的Index处

Object get(int index)

返回集合index索引处的元素

int indexOf(Object o)

返回对象o在List集合中第一次出现的位置索引

int lastIndexOf(Object o)

返回对象o在List集合中最后一次出现的位置索引

Object remove(int index)

删除并返回Index索引处的位置

Object set(int index,Object element)

将index索引处的元素替换成element对象,返回被替换的旧元素。

list的基本使用:

List books=new ArrayList();
books.add(new String("轻量级javaee实战"));
books.add(new String("疯狂java讲义"));
books.add(new String("疯狂Android讲义"));
books.add(new String("疯狂ios讲义")); books.sort((o1,o2)->((String)o1).length()-((String)o2).length()); System.out.println(books); books.replaceAll(ele->((String)ele).length());
System.out.println(books);

  

list的迭代方法:

String[] books = {"轻量级javaee实战","疯狂java讲义","疯狂Android讲义","疯狂ios讲义"};

List bookList=new ArrayList();
for(int i=0;i<books.length;i++) {
bookList.add(books[i]);
} ListIterator lit=bookList.listIterator();
while(lit.hasNext()) {
System.out.println(lit.next());
lit.add("------分隔符-----");
} System.out.println("========下面开始反向迭代======");
while(lit.hasPrevious()) {
System.out.println(lit.previous());
}

  

ArrayList和Vertor:

定义:

Queue集合:

queue中的方法:

方法名称

方法描述

void add(Object e)

将元素加入到队列尾部

Object element()

获取队列头部元素,但是不删除

Boolean offer(Object e)

将元素加入到队列尾部,当使用容量有限的队列时,此方法比add效果好

Object peek()

获取头部元素,但是不删除

Object poll()

获取头部元素,并删除该元素

Object remove()

获取头部元素,并删除该元素

LinkedList:

LinkedList的基本使用:

public class LinkedListTest {

	public static void main(String[] args) {
LinkedList books=new LinkedList();
books.offer("疯狂java讲义");
books.push("javaee企业级实战");
books.offerFirst("疯狂Android讲义");
for(int i=0;i<books.size();i++) {
System.out.println("遍历中--"+books.get(i));
}
System.out.println(books.peekFirst());
System.out.println(books.peekLast());
System.out.println(books.pop());
System.out.println(books);
System.out.println(books.pollLast());
System.out.println(books); } }

  

List集合的性能分析:

05-28 07:59