目录
1.1.1.2,ArrayList的remove()删除方法
1.1.1.3,ArrayList的contains()判断方法
1.1.1.4,ArrayList的set()排序方法和size()大小方法
1.2.1.3,HashSet的contains()判断方法
1.2.1.4,HashSet的size()大小方法和clear()清空方法
2.1.3,HashMap的containkey()和containvalue判断方法
引言
程序中可能通过数组来保存多个对象,因为数组长度是不可变的。JDK中提供了一些特殊的类,这些类 可以存储任何对象,并且长度可变,在java中这些类被为集合。集合类位于 java.util 包中。
集合有两大类:
- 单列集合 Collection 接口
- 双列集合 Map 接口
一,Collection集合
java.util.Collection 是所有单列集合的父接口,因此在Collection中定义了单列集合 List 和 Set 通用的一些方法。
方法声明 | 功能描述 |
boolean add(Object o) | 向集合中添加一个元素 |
boolean addAll(Collection c) | 增加一个集合(多个元素) |
void clear() | 清空集合 |
boolean remove(Object o) | 删除集合中的一个对象(元素) |
boolean removeAll(Collection c) | 删除一个集合(多个元素) |
boolean isEmpty() | 是不是空的 |
boolean contains(Object o) | 判断集合有没有这个元素 |
boolean containsAll(Collection c) | 判断集合中有没有参数集合 |
Iterator iterator() | 返回一个遍历迭代器 |
int size() | 返回集合的元素个数 |
1.1,List接口
List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地将实现了List接口的对象称为List 集合,本质更象一个动态的数组。
List的常用方法:
方法 | 功能描述 |
void add(int index,Object element) | 向集合中指定位置添加一个元素 |
boolean addAll(int index,Collection c) | 向集合中指定位置增加一个集合(多个元素) |
Object get(int index) | 获取指定位置元素 |
Object remove(int index) | 删除指定位置元素 |
Object set(int index,Object element) | 修改指定位置的元素 |
int indexOf(Object o) | 获取指定元素索引 |
int lastIndexOf(Object o) | 获取最后一个元素索引 |
List subList(int fromIndex,int toIndex) | 将指定索引对象对换 |
1.1.1,ArrayList
java.util.ArrayList类是List接口的一个实现类,此对象相当于动态的数组。
实例化ArrayList对象有几种方式:
实例演示:
//实例化 ArrayList
ArrayList list1 = new ArrayList();
var list2 = new ArrayList();
List list3 = new ArrayList();
//此方法实例出的对象,是只读的(不能添加 删除 移动位置,优点是能够快速建立集合实例对象)
List list4 = List.of();
//list4.add(10); 此行是错误的,因为List.of() 对象是只读的
String[] arr = {"java","javascript","python","html"};
//此方法实例出的对象,是只读的;list5.add(10);不可行
List list5 = Arrays.asList(1,2,3);
ArrayList的常用方法添加、删除、判断、大小输出,修改,,排序,遍历:
- add()//添加
- remove()//删除
- contains()//判断
- set()//设置指定位置元素更改为指定对象
- size()//大小
1.1.1.1,ArrayList的add()添加方法
实例演示:
//实例化,这们实例化,集合可以添加任何类型的元素 默认是Object
List list = new ArrayList();
//添加元素
list.add(10);
System.out.println(list);
list.add(5.665);
System.out.println(list);
list.add("java");
System.out.println(list);
list.add("mysql");
System.out.println(list);
//在指定位置添加元素
list.add(0, "python");
System.out.println(list);
//添加多个元素
list.addAll(List.of("html", "css"));
System.out.println(list);
//在指定位置添加多个元素
list.addAll(0, List.of(100, 200, 300, 400, 500));
System.out.println(list);
输出结果:
1.1.1.2,ArrayList的remove()删除方法
示例演示:
List list = new ArrayList();
list.addAll(List.of("java","php","c","go","c++","java","c"));
System.out.println(list);
//删除元素remove(Object o) remove(int index)
//此时删除的是索引为5的元素,如果下标没有5就出异常
//删除对象,成功返回布尔true,失败返回false
var oo = list.remove(5);
System.out.println(oo);
//删除子集合,只要陈工删除一个元素就返回true
System.out.println(list.removeAll(List.of("mysql", "java")));
System.out.println(list);
//清空集合
list.clear();
System.out.println(list);
输出结果:
1.1.1.3,ArrayList的contains()判断方法
示例演示:
List list = new ArrayList();
list.addAll(List.of("java","php","c","go","c++","java","c"));
System.out.println(list);
//判断某一个元素是否存在
System.out.println(list.contains("php"));
//判断集合是否为空
System.out.println(list.isEmpty());
//判断多个元素是否都存在,有一个不存在就返回false
System.out.println(list.containsAll(List.of("mysql", "java")));
输出结果:
1.1.1.4,ArrayList的set()排序方法和size()大小方法
示例演示:
List list = new ArrayList();
list.addAll(List.of("java","php","c","go","c++","java","c"));
System.out.println(list);
System.out.println(list.size());
list.set(0,"c++");
System.out.println(list);
输出结果:
1.1.1.5,ArrayList的遍历
示例演示:
List list = new ArrayList();
list.addAll(List.of("java","php","c","go","c++","java","c"));
System.out.println(list);
//集合遍历
for (Object obj : list) {
System.out.println(obj);
}
for (int i = 0; i < list.size(); i++) {
System.out.printf("list.get(%d) = %s%n", i, list.get(i));
}
输出结果:
1.1.2,LinkedList
extends AbstractSequentialList
LinkedList同时实现了 List 接口和 Deque 对口,也就是收它既可以看作一个顺序容器,又可以看作一 个队列(Queue),同时又可以看作一个栈(stack),这样看来,linkedList简直就是无敌的,当你需要使 用栈或者队列时,可以考虑用LinkedList,一方面是因为Java官方已经声明不建议使用Stack类,更遗憾的是, Java里根本没有一个叫做Queue的类(只是一个接口的名字)。关于栈或队列,现在首选是ArrayDeque, 它有着比LinkedList(当作栈或队列使用时)更好的性能。
LinkedList常用方法同ArrayList基本相同,可以参照Arraylist尝试。
1.2,Set接口
Set接口继承了Collection接口,集合中元素是不能重复的。如果有相关的元素重复内容,就保留原来的 元素,添加的元素取消,不能随机读取元素,没有顺序。
public interface Set extends Collection
1.2.1,HashSet
实例化HashSet:
示例演示:
HashSet hashset1=new HashSet();
Set hashset2=new HashSet();
var hashset=new HashSet();
1.2.1.1,HashSet的add()添加方法
示例演示:
HashSet hashset=new HashSet();
hashset.add("java");
hashset.add("c");
hashset.add("php");
hashset.add("go");
hashset.add("java");
System.out.println(hashset);
hashset.addAll(List.of("nihao","小明"));
System.out.println(hashset);
输出结果:
1.2.1.2,HashSet的remove()删除方法
示例演示:
HashSet hashset=new HashSet(List.of(10,50,30,80,5));
System.out.println(hashset);
System.out.println(hashset.remove(50));
System.out.println(hashset);
System.out.println(hashset.removeAll(List.of(80, 4, 3)));
System.out.println(hashset);
输出结果:
1.2.1.3,HashSet的contains()判断方法
示例演示:
HashSet hashset=new HashSet(List.of(10,50,30,80,5));
System.out.println(hashset);
System.out.println(hashset.contains(5));
System.out.println(hashset.containsAll(List.of(10, 5)));
System.out.println(hashset.containsAll(List.of(10, 5,4)));
输出结果:
1.2.1.4,HashSet的size()大小方法和clear()清空方法
示例代码:
HashSet hashset=new HashSet(List.of(10,50,30,80,5));
System.out.println(hashset);
System.out.println(hashset.size());
hashset.clear();
System.out.println(hashset);
输出结果:
1.2.2,Treeset
是一个有序,可排序的(默认是升序),不可重复元素的集合工具类。
示例演示:
//实例化TreeSet对象
//Set treemap=new TreeSet();
TreeSet treeset=new TreeSet(List.of(5,9,8,4,55,4,1));
System.out.println(treeset);
输出结果:
二,Map集合
map接口是一个双列集合,每个元素有一个键值 对 Map
- 1.Map是一个双列集合,一个元素包含两个值(一个key,一个value)
- 2.Map集合中的元素,key和value的数据类型可以相同,也可以不同
- 3.Map中的元素,key不允许重复,value可以重复
- 4.Map里的key和value是一一对应的。
map集合方法:
2.1,HashMap集合
HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着他不是线程安全的。它的 key、value 都可以为 null,此外,HashMap 中的映射不是有序的。
实例化HashMap
//实例化HashMap,使用泛型
Map<String,Integer> hash1=new HashMap<>();
HashMap<String,Integer> hash2=new HashMap<>();
//不使用泛型
HashMap hash=new HashMap();
2.1.1,HashMap的put()添加方法
示例代码:
HashMap hash=new HashMap();
hash.put("小黑",1);
hash.put("小黄",1);
hash.put("小吕",1);
hash.put("小黑",2);
System.out.println(hash);
输出结果:
2.1.2,HashMap的get()获取方法
示例代码:
HashMap hash=new HashMap();
hash.put("小黑",1);
hash.put("小黄",1);
hash.put("小吕",1);
hash.put("小黑",2);
System.out.println(hash);
System.out.println(hash.get("小黑"));
System.out.println(hash);
输出结果:
2.1.3,HashMap的containkey()和containvalue判断方法
示例代码:
HashMap hash=new HashMap();
hash.put("小黑",1);
hash.put("小黄",1);
hash.put("小吕",1);
hash.put("小黑",2);
System.out.println(hash);
System.out.println(hash.containsKey("小黑"));
System.out.println(hash.containsValue(1));
输出结果:
2.1.4,HashMap的remove()删除方法
示例代码:
HashMap hash=new HashMap();
hash.put("小黑",1);
hash.put("小黄",1);
hash.put("小吕",1);
hash.put("小黑",2);
System.out.println(hash);
System.out.println(hash.remove("小黑"));
System.out.println(hash.remove("小吕", 1));
输出结果:
2.1.5,HashMap的遍历
2.1.5.1,HashMap的keyset()遍历方法
示例代码:
HashMap hash=new HashMap();
hash.put("小黑",1);
hash.put("小黄",1);
hash.put("小吕",1);
hash.put("小黑",2);
System.out.println(hash);
for (Object o : hash.keySet()) {
System.out.println(o);
}
输出结果:
2.1.5.2,HashMap的values()遍历方法
示例代码:
HashMap hash=new HashMap();
hash.put("小黑",1);
hash.put("小黄",1);
hash.put("小吕",1);
hash.put("小黑",2);
System.out.println(hash);
for (Object value : hash.values()) {
System.out.println(value);
}
输出结果:
2.2,TreeMap集合
1. 是一个有序的key-value集合,它是通过红黑树实现的。该映射根据其键的自然顺序进行排序,或 者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
2. 是继承了AbstractMap,也是以key-value集合存储。实现了NavigableMap接口,可以支持一系列 的导航方法。 比如返回有序的key集合。实现了Cloneable克隆接口。实现了java.io.Serializable序列化接口。另 外,TreeMap是非线程同步的。
实例化TreeMap
//实例化TreeMap,使用泛型
Map<String,Integer> treemap1=new TreeMap<>();
TreeMap<String,Integer> treemap2=new TreeMap<>();
//不使用泛型
TreeMap treemap=new TreeMap();
TreeMap应用
示例代码:
TreeMap treemap=new TreeMap();
treemap.put("小黑",1);
treemap.put("小黄",1);
treemap.put("小吕",1);
treemap.put("小黑",2);
System.out.println(treemap);
输出结果: