集合框架
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("Hello");
list.add("World");
list.add("JavaSE");
list.add("JavaME");
list.add("JavaEE");
// list.add(list);
System.out.println(list.toString());
System.out.println(list.size());
System.out.println(list.contains("Java"));
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next() + ",");
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
list.remove("Hello");
System.out.println(list);
list.remove(0);
System.out.println(list);
list.add("abc");
System.out.println(list);
list.add(1, "123");
System.out.println(list);
list.set(1, "666");
System.out.println(list);
System.out.println(list.indexOf("JavaEE2"));
List list1 = list.subList(1, 3);
System.out.println(list1);
}
}
LinkedList 和 ArrayList 的区别:
ArrayList 底层采用的是数组的形式来存储数据,LinkedList 底层采用的是链表的形式来存储数据
数组和链表的区别?
数组内存是连续的空间,查询速度快,增删速度慢
链表内存是不连续的空间,查询速度慢,增删速度快
Set 接口
Set 是 Collection 的子接口,Set 接口以散列的形式存储数据,元素没有顺序,可以存储一组无序且唯一的对象。
List 是有序但是不唯一
Set 是无序且唯一
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
HashSet hashSet = new HashSet();
hashSet.add("Hello");
hashSet.add("Wolrd");
hashSet.add("Hello");
hashSet.add("Wolrd");
hashSet.add("Hello");
hashSet.add("Wolrd");
hashSet.add("JavaSE");
hashSet.add("JavaME");
hashSet.add("JavaEE");
System.out.println(hashSet.toString());
System.out.println(hashSet.size());
Iterator iterator = hashSet.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
hashSet.remove("World");
System.out.println(hashSet);
}
}
LinkedHashSet 是 Set 的另外一个子接口,可以存储一组有序且唯一的元素,有序和 List 的有序不是一个意思
List 的有序是元素有下标,内部的数据有排序的
LinkedHashSet 的有序是元素在集合内部会自动根据大小进行排序
import java.util.*;
public class Test {
public static void main(String[] args) {
LinkedHashSet set = new LinkedHashSet();
set.add(new User(1));
set.add(new User(6));
set.add(new User(2));
set.add(new User(5));
set.add(new User(3));
set.add(new User(4));
set.add(new User(1));
System.out.println(set);
// System.out.println(new User(1).equals(new User(1)));
}
}
import java.util.Objects;
public class User {
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public User(Integer id) {
this.id = id;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(id, user.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
}
TreeSet 有序唯一,集合会自动给元素进行排序
import java.util.Objects;
public class User implements Comparable {
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public User(Integer id) {
this.id = id;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(id, user.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
@Override
public int compareTo(Object o) {
User user = (User) o;
if (this.id < user.id) {
return 1;
} else {
if(this.id == user.id) {
return 0;
} else {
return -1;
}
}
}
}
import java.util.*;
public class Test {
public static void main(String[] args) {
TreeSet set1 = new TreeSet();
set1.add(new User(1));
set1.add(new User(6));
set1.add(new User(2));
set1.add(new User(5));
set1.add(new User(3));
set1.add(new User(4));
System.out.println(set1);
}
}
Map
Set 和 List 只能存储单个数据,Map 存储成对出现的数据,key-value 的键值映射形式存储
方法 | 描述 |
---|---|
int size() | 获取集合长度 |
boolean isEmpty() | 判断集合是否为空 |
boolean containsKey(Object key) | 判断集合中是否存在 key |
boolean containsValue(Object value) | 判断集合中是否存在某个 value |
V get(Object key) | 取出集合中 key 对应的 value |
V put(K key,V value) | 向集合中存入一组 key-value 的元素 |
V remove(Object key) | 删除集合中 key 对应的 value |
void clear() | 清空集合中的所有元素 |
Set keySet() | 取出集合中所有的 key,返回一个 Set 集合 |
Collection values() | 取出集合中所有的 value,返回一个 Collection 集合 |
Set<Map,Entry<K,V>> entrySet() | 将 Map 转换为 Set 对象 |
import java.util.*;
public class Test {
public static void main(String[] args) {
Map<String,String> hashMap = new HashMap<>();
hashMap.put("h", "Hello");
hashMap.put("w", "World");
hashMap.put("j", "Java");
hashMap.put("s","JavaSE");
hashMap.put("m", "JavaME");
hashMap.put("e", "JavaEE");
System.out.println(hashMap);
hashMap.remove("e");
System.out.println(hashMap);
System.out.println(hashMap.containsKey("a"));
System.out.println(hashMap.containsValue("Java"));
Set<String> strings = hashMap.keySet();
Iterator<String> iterator = strings.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
Collection<String> values = hashMap.values();
Iterator<String> iterator1 = values.iterator();
while (iterator1.hasNext()) {
System.out.println(iterator1.next());
}
Set<Map.Entry<String, String>> entries = hashMap.entrySet();
Iterator<Map.Entry<String, String>> iterator2 = entries.iterator();
while (iterator2.hasNext()) {
Map.Entry<String, String> next = iterator2.next();
System.out.println(next.getKey());
System.out.println(next.getValue());
}
}
}
TreeMap 按照 key 值对集合中的元素进行排序
import java.util.*;
public class Test {
public static void main(String[] args) {
Map<User,String> hashMap = new TreeMap<>();
hashMap.put(new User(3), "Hello");
hashMap.put(new User(1), "World");
hashMap.put(new User(2), "Java");
hashMap.put(new User(5),"JavaSE");
hashMap.put(new User(6), "JavaME");
hashMap.put(new User(4), "JavaEE");
System.out.println(hashMap);
}
}
import java.util.Objects;
public class User implements Comparable {
private Integer id;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public User(Integer id) {
this.id = id;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(id, user.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
@Override
public int compareTo(Object o) {
User user = (User) o;
if (this.id > user.id) {
return 1;
} else {
if(this.id == user.id) {
return 0;
} else {
return -1;
}
}
}
}
Collections 工具类
方法 | 描述 |
---|---|
sort | 对集合进行排序 |
binarySearch | 查找元素在集合中的下标 |
reverse | 对集合中的元素进行反序输出 |
swap | 交换集合中两个元素的位置 |
fill | 将集合中所有元素进行替换 |
min | 找出集合中的最小值 |
max | 找出集合中的最大值 |
replaceAll | 将集合中所有的值进行替换 |