集合体系结构
集合的体系
Collection系列:单例集合,每个元素只包含一个值Map系列:双列集合,每个元素是由两个值组成的,即键值对
Collection集合体系
Collection集合包含接口、实现类。
下面是常用的:
Collection集合的特点
List系列集合:添加的元素是有序(即往集合中存入元素的顺序和从集合中取出元素的顺序相同)、可重复(指可以往集合中添加相同的元素)、有索引的(指可以通过索引操作集合中的数据)。
ArrayList
Set系列集合:添加的元素不能重复、无索引。
HashSet
LinkedHashSet
TreeSet
示例:ArrayList是有序的
package com.team.collection;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List
list.add("java");
list.add("html");
list.add("javascript");
list.add("mysql");
System.out.println(list);
}
}
运行输出:
[java, html, javascript, mysql]
示例:ArrayList元素是可以重复的
package com.team.collection;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List
list.add("java");
list.add("html");
list.add("javascript");
list.add("mysql");
list.add("java");
list.add("java");
System.out.println(list);
}
}
运行输出:
[java, html, javascript, mysql, java, java]
示例:ArrayList是支持索引的
package com.team.collection;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List
list.add("java");
list.add("html");
list.add("javascript");
list.add("mysql");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
运行输出:
java
html
javascript
mysql
示例:HashSet是无序的
package com.team.collection;
import java.util.HashSet;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Set
set.add("java");
set.add("html");
set.add("javascript");
set.add("mysql");
System.out.println(set);
}
}
运行输出:
[java, html, mysql, javascript]
示例:HashSet元素是不能重复的
package com.team.collection;
import java.util.HashSet;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Set
set.add("java");
set.add("html");
set.add("java");
set.add("java");
set.add("html");
System.out.println(set);
}
}
运行输出:
[java, html]
Collection集合各个类的应用场景
1、如果希望记住元素的添加顺序,需要存储重复的元素,又要频繁地根据索引查询数据
用ArrayList集合。因为ArrayList是有序、可重复、有索引的,底层基于数组实现。
2、如果希望记住元素的顺序,且增删首尾数据的情况较多
用LinkedList集合。因为LinkedList是有序、可重复、有索引的,底层基于双向链表实现。
3、如果不在意元素顺序,也没有重复元素存储,只希望增删改查都快
用HashSet集合。因为HashSet集合无序、不重复、无索引,底层基于哈希表实现。
4、如果希望记住元素的添加顺序,也没有重复元素需要存储,且希望增删改查都快
用LinkedHashSet集合。因为LinkedHashSet集合有序、不重复、无索引,底层基于哈希表和双链表。
5、如果要对元素进行排序,也没有重复元素需要存储,且希望增删改查都快
用TreeSet集合。因为TreeSet集合底层基于红黑树实现。
Collection的常用方法
add(E e)方法
boolean add(E e):确保此集合包含指定的元素(可选操作)。如果此集合因调用而发生变化,则返回true。如果此集合不允许重复且已经包含指定元素,则返回false。
示例:
package com.team.collection;
import java.util.ArrayList;
import java.util.Collection;
public class Test {
public static void main(String[] args) {
Collection
collection.add("java");
collection.add("html");
collection.add("js");
collection.add("js");
collection.add("mysql");
collection.add("mysql");
collection.add("python");
System.out.println(collection);
}
}
运行输出:
[java, html, js, js, mysql, mysql, python]
clear()方法
void clear():从这个集合中移除所有元素(可选操作)。此方法返回后,集合将为空。
示例:
package com.team.collection;
import java.util.ArrayList;
import java.util.Collection;
public class Test {
public static void main(String[] args) {
Collection
collection.add("java");
collection.add("html");
collection.add("js");
collection.add("js");
collection.add("mysql");
collection.add("mysql");
collection.add("python");
System.out.println(collection);
collection.clear();
System.out.println(collection);
}
}
运行输出:
[java, html, js, js, mysql, mysql, python]
[]
isEmpty()方法
boolean isEmpty():如果此集合不包含任何元素,则返回true。
示例:
package com.team.collection;
import java.util.ArrayList;
import java.util.Collection;
public class Test {
public static void main(String[] args) {
Collection
collection.add("java");
collection.add("html");
collection.add("js");
collection.add("js");
collection.add("mysql");
collection.add("mysql");
collection.add("python");
System.out.println(collection);
System.out.println(collection.isEmpty());
collection.clear();
System.out.println(collection);
System.out.println(collection.isEmpty());
}
}
运行输出:
[java, html, js, js, mysql, mysql, python]
false
[]
true
size()方法
int size():返回此集合中的元素数量。如果此集合包含超过 Integer.MAX_VALUE 个元素,则返回
Integer.MAX_VALUE。
示例:
package com.team.collection;
import java.util.ArrayList;
import java.util.Collection;
public class Test {
public static void main(String[] args) {
Collection
collection.add("java");
collection.add("html");
collection.add("js");
collection.add("js");
collection.add("mysql");
collection.add("mysql");
collection.add("python");
System.out.println(collection);
System.out.println(collection.size());
}
}
运行输出:
[java, html, js, js, mysql, mysql, python]
7
contains(Object o)方法
boolean contains(Object o):如果此集合包含指定的元素,则返回true。更正式地说,当且仅当此集合包含至少一个元素e 使得 Objects.equals(o, e) 为真时,返回true。
示例:
package com.team.collection;
import java.util.ArrayList;
import java.util.Collection;
public class Test {
public static void main(String[] args) {
Collection
collection.add("java");
collection.add("html");
collection.add("js");
collection.add("js");
collection.add("mysql");
collection.add("mysql");
collection.add("python");
System.out.println(collection);
System.out.println(collection.contains("java"));
System.out.println(collection.contains("JAVA"));
}
}
运行输出:
[java, html, js, js, mysql, mysql, python]
true
false
remove(Object o)方法
boolean remove(Object o):如果此集合中存在指定的元素,则从此集合中移除该元素的一个实例(可选操作)。更正式地说,如果此集合包含一个或多个满足Objects.equals(o, e) 的元素e,则移除这些元素中的一个。如果此集合包含指定的元素(或者等价地,如果此集合因调用而发生变化),则返回true。如果有多个重复的元素,删除前面的第一个元素。
示例:
package com.team.collection;
import java.util.ArrayList;
import java.util.Collection;
public class Test {
public static void main(String[] args) {
Collection
collection.add("java");
collection.add("html");
collection.add("js");
collection.add("js");
collection.add("mysql");
collection.add("mysql");
collection.add("python");
System.out.println(collection);
collection.remove("java");
System.out.println(collection);
collection.remove("mysql");
System.out.println(collection);
}
}
运行输出:
[java, html, js, js, mysql, mysql, python]
[html, js, js, mysql, mysql, python]
[html, js, js, mysql, python]
toArray()方法
Object[] toArray():返回一个包含此集合中所有元素的数组。如果此集合对其迭代器返回的元素顺序有任何保证,则此方法必须以相同的顺序返回这些元素。
示例:
package com.team.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class Test {
public static void main(String[] args) {
Collection
collection.add("java");
collection.add("html");
collection.add("js");
collection.add("js");
collection.add("mysql");
collection.add("mysql");
collection.add("python");
System.out.println(collection);
Object[] objects = collection.toArray();
System.out.println(Arrays.toString(objects));
}
}
运行输出:
[java, html, js, js, mysql, mysql, python]
[java, html, js, js, mysql, mysql, python]
toArray(T[] a)方法
示例:
package com.team.collection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class Test {
public static void main(String[] args) {
Collection
collection.add("java");
collection.add("html");
collection.add("js");
collection.add("js");
collection.add("mysql");
collection.add("mysql");
collection.add("python");
System.out.println(collection);
String[] strings = collection.toArray(new String[collection.size()]);
System.out.println(Arrays.toString(strings));
}
}
运行输出:
[java, html, js, js, mysql, mysql, python]
[java, html, js, js, mysql, mysql, python]
addAll(Collection extends E> c)方法
boolean addAll(Collection extends E> c):将指定集合中的所有元素添加到此集合中。
示例:
package com.team.collection;
import java.util.ArrayList;
import java.util.Collection;
public class Test {
public static void main(String[] args) {
Collection
collection1.add("java");
collection1.add("html");
Collection
collection2.add("js");
collection2.add("js");
collection2.add("mysql");
collection1.addAll(collection2);
System.out.println("collection1变为:" + collection1);
System.out.println("collection2仍然是:" + collection2);
}
}
运行输出:
collection1变为:[java, html, js, js, mysql]
collection2仍然是:[js, js, mysql]