数组声明
int[] arr2 = new int[5];//推荐这种
int arr[] = new int[5];
数组初始化
int arr[] = new int[]{1, 3, 5, 7, 9};
int[] arr2 = {2, 4, 6, 8, 10};
添加元素以及取出元素
int[] arr = new int[5];
arr[0] = 1;
int a = arr[0];
遍历数组
public static void main(String[] args) {
int arr[] = new int[]{1, 3, 5, 7 ,9};
int[] arr2 = {2, 4, 6, 8, 10};
for (int i = 0; i < arr.length; ++i) {
System.out.print(arr[i] + "\t"); // 1 3 5 7 9
}
for (int x: arr2) {
System.out.print(x + "\t"); // 2 4 6 8 10
}
}
Arrays工具类的常用操作
方法 | 功能 | 备注 |
fill(int[] a, int val) | 填充数组 | |
fill(int[] a, int fromIndex, int toIndex, int val) | 填充指定索引区间数组 | 左闭右开 |
sort(int[] a) | 数组排序 | |
sort(int[] a, int fromIndex, int toIndex) | 排序指定索引的元素 | |
copyOf(int[] original, int newLength) | 复制数组 | 指定新数组长度 |
copyOfRange(int[] original, int from, int to) | 复制数组 | 指定所复制的原数组的索引 |
Arrays.asList(stringArray).contains(“a”); | 检查数组中是否包含某一个值 | |
Arrays.binarySearch(str) | 定位元素位置 | 前提是有序数组有序数组 |
Arrays.asList.indexOf(str); | 定位元素位置 |
ArrayUtils工具类的常用操作
方法 | 功能 | 备注 |
ArrayUtils.addAll(intArray, intArray2); | 连接两个数组 | |
ArrayUtils.reverse(intArray); | 数组翻转 | |
ArrayUtils.removeElement(intArray, 3) | 从数组中移除一个元素 | 返回一个删除后的新数组 |
字符串
String是不可变类型,即不能被修改
字符串的格式化
String fs = String.format("浮点型变量的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
" %s", floatVar, intVar, stringVar);
String类常用操作
方法 | 功能 | 备注 |
返回指定索引处的 char 值。 | ||
判断是否包含指定的字符 | ||
测试此字符串是否以指定的后缀结束。 | ||
将此字符串与指定的对象比较。 | ||
将此 String 与另一个 String 比较,不考虑大小写。 | ||
返回指定子字符串在此字符串中第一次出现处的索引。 | ||
返回指定字符最后一次出现处的索引。 | ||
返回此字符串的长度。 | ||
替换子串 | 返回一个新的字符串 | |
字符串分割 | ||
字符串切片 | 返回一个新的字符串 | |
使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 | ||
使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 | ||
删除字符串左右空元素 | 返回字符串的副本 | |
判断字符串是否为空。 |
集合框架
Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。
Java集合框架图
Java集合框架体系图
ArrayList
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList ,并实现了 List 接口。
初始化
import java.util.ArrayList; // 引入 ArrayList 类
ArrayList<E> objectName =new ArrayList<>(); // 初始化
ArrayList类常用操作
方法 | 功能 | 备注 |
| ||
添加集合中的所有元素到 arraylist 中 | ||
删除 arraylist 中的所有元素 | ||
复制一份 arraylist | ||
| ||
| ||
| ||
删除存在于指定集合中的 arraylist 里的所有元素 | ||
| ||
返回 arraylist 里元素数量 | ||
判断 arraylist 是否为空 | ||
截取部分 arraylist 的元素 | 左开右闭 | |
| ||
| 默认为升序排列 | |
将 arraylist 转换为数组 | ||
返回指定元素在 arraylist 中最后一次出现的位置 | ||
保留 arraylist 中在指定集合中也存在的那些元素 | ||
查看 arraylist 是否包含指定集合中的所有元素 | ||
遍历 arraylist 中每一个元素并执行特定操作 |
LinkedList
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。
链表可分为单向链表和双向链表。
LinkedList 继承了 AbstractSequentialList 类。
LinkedList 实现了 Queue 接口,可作为队列使用。
LinkedList 实现了 List 接口,可进行列表的相关操作。
LinkedList 实现了 Deque 接口,可作为队列使用。
LinkedList 实现了 Cloneable 接口,可实现克隆。
LinkedList 实现了 java.io.Serializable 接口,即可支持序列化,能通过序列化去传输。
LinkedList常用操作
方法 | 描述 | 备注 |
| 末尾添加元素 | 返回布尔值 |
add(int index, E element) | 向指定位置插入元素。 | 返回布尔值 |
| 元素添加到头部。 | |
| 元素添加到尾部。 | |
get(int index) | 返回指定位置的元素。 | |
| 返回第一个元素。 | |
| 返回最后一个元素。 | |
remove() | 删除并返回第一个元素。 | |
| 删除并返回第一个元素。 | |
| 删除并返回最后一个元素。 | |
remove(Object o) | 删除某一元素 | 返回布尔值 |
remove(int index) | 删除指定位置的元素。 | |
| 设置指定位置的元素。 | |
| 判断是否含有某一元素。 | |
| 查找指定元素从前往后第一次出现的索引。 | |
lastIndexOf(Object o) | 查找指定元素最后一次出现的索引。 | |
clear() | 清空链表。 | |
size() | 返回链表元素个数。 | |
addAll(Collection c) | 将一个集合的所有元素添加到链表后面 | 返回布尔值 |
addAll(int index, Collection c) | 将一个集合的所有元素添加到链表的指定位置后面 | 返回布尔值 |
ArrayList与LinkedList的抉择
ArrayList :是顺序结构,查找和修改速度快,就像电影票
LinkedList :是链表结构,增加和删除速度快,就像佛珠
以下情况使用 ArrayList :
- 频繁访问列表中的某一个元素。
- 只需要在列表末尾进行添加和删除元素操作。
以下情况使用 LinkedList :
- 你需要通过循环迭代来访问列表中的某些元素。
- 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
HashSet
HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合
HashSet 允许有 null 值
HashSet 是无序的,即不会记录插入的顺序
HashSet 不是线程安全的
HashSet 实现了 Set 接口
HashSet类常用方法
方法 | 描述 | 备注 |
add() | 添加元素 | |
remove(value) | 删除元素 | |
contoins(value) | 判断是否存在元素 | |
size() | 得到元素个数 | |
for-each | 迭代 |
HashSet、LinkedHashSet、TreeSet的抉择
HashSet: 无序
LinkedHashSet: 按照插入顺序
TreeSet: 从小到大排序
HashMap
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
HashMap 是无序的,即不会记录插入的顺序。
HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。
HashMap类常用操作
方法 | 功能 | 描述 |
将键/值对添加到 hashMap 中 | ||
获取指定 key 对应对 value | ||
获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值 | ||
删除指定键 key 的映射关系 | ||
是否存在指定的 key | ||
keySet() | 返回 hashMap 中所有 key 组成的集合视图。 | |
返回 hashMap 中存在的所有 value 值。 | ||
判断 hashMap 是否为空 | ||
计算 hashMap 中键/值对的数量 | ||
对 hashMap 中的每个映射执行指定的操作。 | ||
检查 hashMap 中是否存在指定的 value 对应的映射关系。 |
HashMap与Hashtable的抉择
HashMap和Hashtable都实现了Map接口,都是键值对保存数据的方式
区别1:
- HashMap可以存放 null
- Hashtable不能存放null
区别2:
- HashMap不是线程安全的类
- Hashtable是线程安全的类
Collections工具类
Collections是一个类,容器的工具类,就如同Arrays是数组的工具类
方法 | 功能 | 备注 |
reverse | 反转 | |
shuffle | 混淆 | |
sort | 排序 | |
swap | 交换 | |
rotate | 滚动 | |
synchronizedList | 线程安全化 |