数组
一维数组
定义:数据类型[] 数组名 = new 数据类型[长度]
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr = new int[10];
for(int i = 0;i< arr.length;i++){
arr[i] = i;
}
System.out.println(Arrays.toString(arr));
}
}
程序解析:首先定义一个长度为10,数据类型为int的数组,利用for循环,将数组的每个内存位置放置对应的元素,最后使用java.util.Arrays包下的toString方法将数组转换为字符串
注意点:
1、数组的访问下标是从0开始,并非从1开始
2、arr.length表示arr这个数组的长度,这里就是10
3、Arrays.toString()方法即把数组以字符串方式打印出来,使用该方法需导入java.util.Arrays包
结果:
二维数组
定义:数据类型[][] 数组名 = new 数据类型[长度1][长度2]
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[][] arr = new int[4][4];
for(int i = 0;i< arr.length;i++){
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = j;
}
}
System.out.println(Arrays.deepToString(arr));
}
}
程序解析:首先定义一个4x4的二维数组,然后使用for循环嵌套方式给数组赋值,最后使用Arrays包下的deepToString方法将二维数组转换为字符串
注意点:
1、二维数组可以看成一个矩阵,长度1是行的数量,长度2是列的数量
2、Arrays.deepToString可将二维数组转换为字符串,若使用Arrays.toString方法转换二维数组,最后打印出来的是数组的地址
小例题:
1、力扣第1题
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] arr = new int[2];
int a = 0;
for(int i = 0;i<nums.length;i++){
for(int j = i;j<nums.length;j++){
if(nums[i]+nums[j] == target){
if(i != j){
arr[a] = i;
a++;
arr[a] = j;
a++;
}
}
}
}
return arr;
}
}
本题可以用双指针进行解决,因为题目最后要求返回的是两个数,并且是以数组形式返回,所以应该先定义一个长度为2,类型为int的数组用于返回,然后使用两层循环,这里的i,j就类似于指针,i从0开始,j从i开始,只要i和j位置上的数相加等于目标数,并且i和j不一样,就将这两个数的下标放到返回数组当中,最后返回出去
列表
java.util.List< E >
ps:这里的E表示泛型,泛型就是不确定的数据类型,可以是八大基本类型,也可以是对象
List不是类,而是一个接口
方法:
method name param returnType
add() E e boolean
clear() void
contains() Object o boolean
equals() Object o boolean
isEmpty() boolean
remove() int index E
set() int index,E element E
size() int
方法解析:
add方法,传入一个E类型的参数,若列表中存在该元素,则返回false,否则返回true,并存入列表当中
clear方法,无传入参数,无返回值,被调用后会清楚列表中所有的元素
contains方法,传入一个object类型元素,如果列表当中包含该元素则返回true,否则返回false
equals方法,传入一个object类型元素,如果列表和对象相同则返回true,否则返回false
isEmpty方法,无传入参数,被调用后会判断该列表中是否含有元素,若有元素则返回true,否则返回false
remove方法,传入一个index,返回一个E类型数据,但一般这个数据是删除index位置元素后的列表
set方法,传入一个index,一个E类型的element,调用后会改变原本index的元素值为element,并将改变后的列表返回
size方法,调用后可以获得该列表的元素个数
java.util.ArrayList< E >
可实现接口:Serializable,Cloneable,Iterable,Collection,List,RandomAccess
方法: 因为ArrayList可实现List接口,所以大部分的方法和List相同,这里就不再赘述
构造方法:
ArrayList()
构造一个初始容量为10的空列表
ArrayList(Collection<? extends E> c)
构造一个包含指定集合的元素的列表,它们在集合的迭代器返回的顺序中返回
ArrayList(int initialCapacity)
用指定的初始容量构造一个空列表
列表常规用法
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list.add(i);
}
System.out.println(list.toString());
}
}
结果:
这个是最基本的关于list的用法,首先构建一个存放Integer数据类型的列表,然后通过for循环将0-9全部加入至集合当中,最后用打印语句和toString方法将列表以字符串形式输出
哈希表(字典)
java.util.HashMap<K,V>
构造方法:
HashMap()
构造一个默认的初始容量的空 HashMap(16)和默认的加载因子(0.75)
HashMap(int initialCapacity)
构建了一个具有指定的初始容量和加载因子空 HashMap(0.75)
HashMap(int initialCapacity,float loadFactor)
构造一个空 HashMap具有指定的初始容量和加载因子
HashMap(Map<? extends K,? extends V> m)
构建了一种新的 HashMap与指定的 Map相同的映射
主要方法:
method name param returnType
clear() void
containsKey() Object key boolean
containsValue() Object value boolean
Set<Map.Entry<K,V>> entrySet()
get() Object key V
isEmpty() boolean
put() K key,V value V
remove() Object key V
size() int
方法解析:
clear,无传入参数,被调用后清除该哈希表中所有的映射
containsKey,传入一个Object类型的key,若哈希表当中存在该key,就会返回true,否则返回false
containsValue,传入一个Object类型的value,若哈希表当中存在该value,就会返回true,否则返回false
Set<Map.Entry<K,V>>,该方法会将HashMap类型数据转化为entrySet类型,entrySet类型方便操作原HashMap中的key和value值
get,传入一个Object类型的key,它会根据key的值匹配对应的value,并将该value值返回
isEmpty,无传入参数,被调用后会判断当前哈希表是否有映射,若有就返回true,否则返回false
put,传入一个key和一个value,该key和value的类型需与泛型中的类型一致
remove,传入一个Object类型的key,它会根据key匹配对应的映射,并删除该映射
size,无传入参数,被调用后返回哈希表的映射数量
哈希表常规用法
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<Integer,Integer> map = new HashMap<>();
map.put(1,2);
map.put(2,3);
System.out.println(map.toString());
}
}
结果: