Java常用类库

 内容持续更新中。。。

目录

String字符串类

charAt()---通过索引获取字符串字符

length()---获取字符串长度

split()---根据条件切割字符串为数组

valueOf()---将其他类型转为字符串

trim()---去除字符串前后的空格

replace()---字符串替换

repeat()---返回字符串重复n次拼接的新字符串

Arrays数组类

Arrays.toString()---转换数组为String,可以直接打印数组内容

Arrays.sort()---升序排序

Arrays.parallelSort()---升序排序

Arrays.equals()---比较数组

Arrays.copyOf()---复制数组

Arrays.copyOfRange()---复制数组

Arrays.fill()---初始化数组元素

Arrays.setAll()---待定。。。

Arrays.mismatch()---比较数组相同的元素,不匹配返回索引值

Collection集合类集

Iterator---集合的迭代器

List类---有序列表集合(也称为序列或列表)允许重复元素

add()---添加元素方法

addAll()---

clear()---删除集合的所有元素

contains()---判断元素是否在集合中,在则返回true,不在则返回false

containsAll()---判断传入的集合或元素是否包含在list中,包含则返回true,不包含在则返回false

equals()---判断列表集合是否相同

copyOf()---复制集合元素,返回一个新集合

get()---返回列表集合指定位置的元素 

indexOf()---查找传入的元素是否存在;存在则返回元素在列表中第一次找到的索引值,不存在则返回-1

lastIndexOf()---返回指定元素在列表集合里最后出现的索引值,没有则返回-1

isEmpty()---判断列表集合是否为空,为空则返回true,不为空返回false

listIterator()---列表集合迭代器

of()---返回固定长度的列表集合

remove()---移除列表集合中的元素

removeAll()---传入列表对象,移除该对象中包含的元素

replaceAll()---待更新。。。

 retainAll()---原列表保留传入列表中的元素,其余的元素丢弃

set()---替换列表集合中的元素

size()---返回列表集合的元素个数,返回值为int

sort()---给元素排序

spliterator()---待更新。。。

 subList()---返回列表集合的指定范围的元素

toArray()---返回列表集合元素组成的数组

HashMap类 

clear()---删除所有键值对映射 

clone()---浅复制映射

compute()---计算指定键及其当前映射值满足表达式时,对值做修改,不满足则返回null 

computeIfAbsent()---如果键未关联或值为空,将新值赋值给其值;不为空则原值不变

computeIfPresent()---指定的键,若不为空,则修改其值 

containsKey()---判断查找的映射键是否存在,存在返回true,反之返回false

containsValue()---判断映射中要查找的映射值是否在映射中,在则返回true,反之返回false 

entrySet()---将映射的键值对内容成对取出来,生成列表集合元素

get()---返回指定键映射到的值,若无值则返回null

isEmpty()---判断映射是否元素为空,空则返回true

keySet()---返回映射键的列表集合

merge()---如果指定的键尚未与值关联或与null关联,则将其与给定的非空值关联。

put()---新增映射键值对

putAll()---将另一个映射元素添加到当前映射里

remove()---根据键删除此映射的键值对,返回的为映射键对应的值

size()---返回键值对的数量

values()---返回映射中包含的值的集合

泛型

泛型类

泛型接口

泛型方法

泛型限制类型

泛型中的通配符?

作用

注意


String字符串类

charAt()---通过索引获取字符串字符

解释:传入int类型索引值,返回操作此字符串中对应索引值的char字符类型数据;

用法:

String s = "abcd";

char a = s.charAt(2);

length()---获取字符串长度

解释:返回操作此字符串int类型的长度

用法:

String s = "abcd";

 int a = s.length();

split()---根据条件切割字符串为数组

解释:根据正则表达式条件(即对应条件),将字符串拆分为含多个元素的字符串数组,元素为原字符串的一部分。

可以传一个参数或两个参数;一个参数时s.split("正则表达式");两个参数时s.split("正则表达式",3)即按正则表达式找到的内容,将字符串分割为3部分,当不填第二个参数时,则一直分割,直到结束;

用法:

String s = "a-b-c-d";

String[] arr = s.split("-");

分割后的arr数组内容为{"a","b","c","d"}

valueOf()---将其他类型转为字符串

解释:将其他类型转换为字符串类型

用法:

char[] arr1 = {'a','b','c'};

String s = String.valueOf(arr1);

System.out.println(s);

输出:abc

trim()---去除字符串前后的空格

 

解释:去除字符串前后的空格,返回新的字符串

使用:

String s = "   dfdsfsdf cba    ";

String x = s.trim();

System.out.println(x);

输出结果:"dfdsfsdf cba"

replace()---字符串替换

 

解释:将字符串的某些字符替换为其他字符,也可以是字符串的替换,返回字符串值

用法:

String s = "你叫什么?";
String x = s.replace("你","他");
System.out.println(x);

repeat()---返回字符串重复n次拼接的新字符串

 解释:返回字符串重复n次拼接的新字符串

用法:

String s = "aaa fghhhhh eee";

String x = s.repeat(2);

System.out.println(x);

 

Arrays数组类

Arrays.toString()---转换数组为String,可以直接打印数组内容

解释:使用时传入任意类型的数组,返回后是String的类型字符串形如[a, b, c]

后续也可以人为重写toString()方法,自定义内容输出格式

用法:

String[] arr = {"a","b","c"};

String s = Arrays.toString(arr);

System.out.println(s);

程序输出结果为:[a, b, c]

Arrays.sort()---升序排序

解释:传入任意类型数组对象,对数组内的元素按升序排序,无返回值,只需传入数组,调用方法即可。

还可以指定数组索引范围进行升序排序,需传入3个参数

Arrays.sort(数组对象,起始索引,结束索引);

用法:
int[] arr = {14,25,78,11,0,100,23};
Arrays.sort(arr);  //给数组按升序排序
String x = Arrays.toString(arr);
System.out.println(x);

输出结果如下:

[0, 11, 14, 23, 25, 78, 100]

Arrays.parallelSort()---升序排序

解释:与Arrays.sort()等同的数组升序排序方法

传入任意类型数组对象,对数组内的元素按升序排序,无返回值,只需传入数组,调用方法即可。

还可以指定数组索引范围进行升序排序,需传入3个参数

用法:

int[] arr = {14,25,78,11,0,100,23};
Arrays.parallelSort(arr);
String x = Arrays.toString(arr);
System.out.println(x);

输出结果如下:

[0, 11, 14, 23, 25, 78, 100]

两者区别:

根据性能结果,我们可以得出结论,当需要对大型数据集进行排序时,parallelSort()可能是更好的选择。但是,对于较小大小的数组,最好使用sort(),因为它提供了更好的性能。

详细请看如下链接:

https://blog.csdn.net/weixin_39946657/article/details/110612876

Arrays.equals()---比较数组

 解释:比较任意同类型的数组arr1和数组arr2的元素成员是否相等,返回布尔类型的值,相等返回true,不相等返回false.

用法:

int[] arr1 = {14,25,78,11,0,100,23};
int[] arr2 = {14,25,78,11,0,100,2};
int[] arr3 = {14,25,78,11,0,100,23};
boolean x1 = Arrays.equals(arr1,arr2);
boolean x2 = Arrays.equals(arr1,arr3);
System.out.println(x1);
System.out.println(x2);

程序运行结果为:

false

true

Arrays.copyOf()---复制数组

解释:将任意类型数组,复制指定长度,并返回一个新数组对象;可以看作截断数组或复制数组(当设置的长度等于原数组长度时)的作用。

用法:

import java.util.Arrays;

public class Demo1 {
    public static void main(String[] args){

        int[] arr1 = {14,25,78,11,0,100,23};
        int[] arr2 = Arrays.copyOf(arr1,3);  //设置长度小于arr1时,复制并截取数组arr1
        int[] arr3 = Arrays.copyOf(arr1,7);  //设置长度与arr1相等时,完全复制数组arr1
        int[] arr4 = Arrays.copyOf(arr1,10); //设置长度大于arr1时,复制数组arr1,并扩容
        System.out.println(Arrays.toString(arr2));
        System.out.println(Arrays.toString(arr3));
        System.out.println(Arrays.toString(arr4));
    }
}

程序运行结果如下:

Arrays.copyOfRange()---复制数组

解释:将任意类型数组,复制指定长度,并返回一个新数组对象;可以看作截断数组或复制数组(当设置的长度等于原数组长度时)的作用。与Arrays.copyOf()用法等同。

Arrays.fill()---初始化数组元素

解释:为任意数组的每个元素设置一个初始值;无返回值,只需调用方法即可使用;格式:Arrays.fill(数组,初始值);

用法:

import java.util.Arrays;

public class Demo1 {
    public static void main(String[] args){
        int[] arr1 = new int[5];
        Arrays.fill(arr1,89);
        System.out.println(Arrays.toString(arr1));
    }
}

程序运行结果如图:

Arrays.setAll()---待定。。。

 

Arrays.mismatch()---比较数组相同的元素,不匹配返回索引值

解释:比较两个数组的元素,返回数组第一个不配的元素的索引值,若返回-1,可以认为两个数组元素完全相同(因为元素都匹配了);

格式:int x = Arrays.mismatch(arr1,arr2);

也可以设置两个数组的任意范围的元素的匹配情况格式:int x = Arrays.mismatch(T[] a, int aFromIndex, int aToIndex, T[] b, int bFromIndex, int bToIndex),返回相对索引值

用法:

package day02;

import java.util.Arrays;

public class Demo1 {
    public static void main(String[] args){

        String[] arr1 = {"a","b","er"};
        String[] arr2 = {"a","b","er","kk"};
        int x = Arrays.mismatch(arr1,arr2);
        System.out.println(x);
    }
}

程序运行结果如下:

Collection集合类集

 

集合类库继承、父子关系图

Iterator---集合的迭代器


方法如下图:

1.hasNext():方法返回true或false;判断迭代器是否有元素需要迭代

2.next():方法返回一个对象元素

3.remove():移除最后一次next()方法返回的那个元素

解释代码如下:

import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public class Demo4 {
    public static void main(String[] args) {
        List<String> list = new LinkedList<>();
        list.add("aa");
        list.add("bb");
        list.add("cc");
        list.add("dd");
        list.add("eee");
        list.add("fff");
        System.out.println(list.toString());

        ListIterator<String> li = list.listIterator();

        System.out.println(li.next());  //aa
        System.out.println(li.next());  //bb
        li.remove(); //移除了bb

        System.out.println("-------------------------------------------------");
        System.out.println(list.toString());

        while (li.hasNext()){

            System.out.println(li.next());  //打印cc dd eee fff
        }
    }
}

运行结果如下:

List类---有序列表集合(也称为序列或列表)允许重复元素

创建字符串类型的有序集合:List<String> list = new LinkedList<>();

add()---添加元素方法

两种方式

1.list.add("fff");直接添加元素

2.list.add(0,"hello");通过索引添加元素(注意索引不能超过集合容量范围)

addAll()---

 1.list.addAll(list1);可以将整个集合直接添加

2.list.addAll(0,list1);通过索引将整个集合直接添加

package day02;

import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    public static void main(String[] args) {
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("bb");
        list1.add("cc");
        list1.add("dd");
        list1.add("eee");
        list1.add("fff");
        list1.add(1,"hello");

        List<String> list = new LinkedList<>();

        //将list1加到list中
        list.addAll(list1);
        //指定索引再将list1添加到list中
        list.addAll(1,list1);
        System.out.println(list.toString());
        
    }
}

 输出打印list内容如下:

圈起处为第二次添加的内容

clear()---删除集合的所有元素

 list.clear()清空集合的所有元素

contains()---判断元素是否在集合中,在则返回true,不在则返回false

如下图:

containsAll()---判断传入的集合或元素是否包含在list中,包含则返回true,不包含在则返回false

import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    public static void main(String[] args) {
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("bb");
        list1.add("cc");
        list1.add("dd");
        list1.add("eee");
        list1.add("fff");
        list1.add(1,"hello");

        List<String> list = new LinkedList<>();

        list.addAll(list1);
        list.addAll(1,list1);
        System.out.println(list.toString());
        System.out.println("----------------------------------------");
        List<String> list2 = new LinkedList<>();
        list2.add("aa");
        list2.add("eee");
        List<String> list3 = new LinkedList<>();
        list3.add("hgk");
        list3.add("eee");
        System.out.println(list.containsAll(list2));
        System.out.println(list.containsAll(list3));

    }
}

 运行结果:

equals()---判断列表集合是否相同

 

import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list2 = new LinkedList<>();
        list2.add("aa");
        list2.add("eee");
        List<String> list3 = new LinkedList<>();
        list3.add("hgk");
        list3.add("eee");
        System.out.println("list2:"+list2);
        System.out.println("list3:"+list3);
        //打印list2和list3比较结果
        System.out.println(list2.equals(list3));
        System.out.println("----------------------------------------");
        list2 = List.copyOf(list3);
        System.out.println("list2:"+list2);
        System.out.println("list3:"+list3);
        //打印list2和list3比较结果
        System.out.println(list2.equals(list3));
    }
}

 运行结果:

copyOf()---复制集合元素,返回一个新集合

 使用方式:List.copyOf(对象);

import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list2 = new LinkedList<>();
        list2.add("aa");
        list2.add("eee");
        List<String> list3 = new LinkedList<>();
        list3.add("hgk");
        list3.add("eee");
        System.out.println("list2:"+list2);
        System.out.println("list3:"+list3);
        System.out.println("----------------------------------------");
        //使用copyOf()方法复制list3集合内容,生成的新集合给到list2,list2最后的结果将和list3一致
        list2 = List.copyOf(list3);
        System.out.println("list2:"+list2);
        System.out.println("list3:"+list3);
        
    }
}

打印结果如下:

 

get()---返回列表集合指定位置的元素 

 

 使用方式:返回的数据类型 a = list1.get(3);

import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("student");
        String a = list1.get(3);
        System.out.println(a);

    }
}

 

 hashCode()---返回此列表集合的哈希码值(对象在内存中的地址值)

import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("student");
        int a = list1.hashCode();
        List<String> list2 = new LinkedList<>();
        list2.add("tttt");
        int b = list2.hashCode();
        System.out.println("list1.code:"+a);
        System.out.println("list2.code:"+b);
    }
}

 

indexOf()---查找传入的元素是否存在;存在则返回元素在列表中第一次找到的索引值,不存在则返回-1

import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("student");
        list1.add("hello");
        System.out.println(list1);

        int a = list1.indexOf("hello");
        System.out.println(a);

        int b = list1.indexOf("dd");
        System.out.println(b);
    }
}

 

lastIndexOf()---返回指定元素在列表集合里最后出现的索引值,没有则返回-1

 

import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("hello");
        list1.add("student");
        System.out.println("list1:"+list1);

        //找列表中第一次出现的"hello"
        int a = list1.indexOf("hello");
        System.out.println(a);
        //找列表中最后一次出现的"hello"
        int b = list1.lastIndexOf("hello");
        System.out.println(b);
        //找列表中第一次出现的"kkkk"
        int c = list1.indexOf("kkkk");
        System.out.println(c);
        //找列表中最后一次出现的"kkkk"
        int d = list1.lastIndexOf("kkkk");
        System.out.println(d);

    }
}

 

isEmpty()---判断列表集合是否为空,为空则返回true,不为空返回false

 

 

import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("student");
        System.out.println("list1:"+list1);
        //清空列表元素
        list1.clear();

        System.out.println("列表元素为空?"+list1.isEmpty());
    }
}

 

listIterator()---列表集合迭代器

1.list.listIterator();默认从0索引位置开始的迭代器

2.list.listIterator(3);默认从3索引位置开始的迭代器;(列表集合不能为空,最大索引不能小于3)

import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("hello");
        list1.add("student");
        System.out.println("list1:"+list1);
        System.out.println("----------------------------------------");

        //li为生成的list1的迭代器
        ListIterator<String> li1 = list1.listIterator();
        //迭代打印元素
        System.out.println("li1迭代器开始");
        System.out.println(li1.next());
        System.out.println(li1.next());
        
        //li为生成的list1的迭代器
        System.out.println("---------------------------------------");
        ListIterator<String> li2 = list1.listIterator(4); //迭代器从索引为4的元素开始
        //迭代打印元素
        System.out.println("li2迭代器开始");
        System.out.println(li2.next());
        System.out.println(li2.next());
        
    }
}

 

of()---返回固定长度的列表集合

remove()---移除列表集合中的元素

1.list.remov(1);通过索引下标移除元素

2.list.remove("hello");通过具体元素对象进行移除

import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("hello");
        list1.add("student");
        System.out.println("list1:"+list1);
        System.out.println("----------------------------------------");

        list1.remove(1);
        System.out.println("移除下标为1的元素");
        System.out.println("list1:"+list1);
        System.out.println("----------------------------------------");
        System.out.println("移除为'java'的元素");
        list1.remove("java");
        System.out.println("list1:"+list1);
        
    }
}

 

removeAll()---传入列表对象,移除该对象中包含的元素

格式:list.remove(list1);

移除自身:list.remove(list);等同于list.clear();

import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("hello");
        list1.add("student");
        System.out.println("list1:"+list1);
        System.out.println("----------------------------------------");
        
        List<String> list2 = new LinkedList<>();
        list2.add("hello");
        list2.add("world");
        list2.add("java");

        System.out.println("list2:"+list2);
        //移除list1里面含在list2中的元素
        list1.removeAll(list2);
        System.out.println("list1:"+list1+"移除后结果.");

    }
}

replaceAll()---待更新。。。

 retainAll()---原列表保留传入列表中的元素,其余的元素丢弃

 

 

import java.util.LinkedList;
import java.util.List;


public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("hello");
        list1.add("student");
        System.out.println("list1:"+list1);
        System.out.println("----------------------------------------");

        List<String> list2 = new LinkedList<>();
        list2.add("hello");
        list2.add("world");
        list2.add("java");
        System.out.println("list2:"+list2);

        list1.retainAll(list2);
        System.out.println("list1:"+list1);
    }
}

 

set()---替换列表集合中的元素

import java.util.LinkedList;
import java.util.List;


public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("hello");
        list1.add("student");
        System.out.println("list1:"+list1);
        System.out.println("----------------------------------------");

        list1.set(1,"python");
        System.out.println("list1:"+list1);
    }
}

 

size()---返回列表集合的元素个数,返回值为int

import java.util.LinkedList;
import java.util.List;


public class Demo4 {
    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("hello");
        list1.add("student");
        System.out.println("list1:"+list1);
        System.out.println("----------------------------------------");
        
        System.out.println(list1.size());
    }
}

 

sort()---给元素排序

 列表集合有自己的默认排序规则,有Comparable和Comparator两个接口,在自定义对象比较时需要重写这两个接口,这里不展开说;

使用方式:Collections.sort(list1);

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    private static Object String;

    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("hello");
        list1.add("student");
        System.out.println("list1:"+list1);

        List<Integer> list2 = new LinkedList<Integer>();
        list2.add(54);
        list2.add(33);
        list2.add(66);
        list2.add(12);
        list2.add(88);
        list2.add(36);

        System.out.println("list2:"+list2);
        System.out.println("----------------------------------------");

        Collections.sort(list1);
        System.out.println("list1:"+list1);
        Collections.sort(list2);
        System.out.println("list2:"+list2);
    }
}

字符串按字母顺序排,数字按大小排 

 

spliterator()---待更新。。。

 

 subList()---返回列表集合的指定范围的元素

返回的元素为[2,6)的索引下标的值:list1.subList(2,6);

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    private static Object String;

    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("hello");
        list1.add("student");
        System.out.println("list1:"+list1);
        System.out.println("----------------------------------------");

        Collections.sort(list1);
        //返回的元素为[2,6)的索引下标的值
        List<String> L = list1.subList(2,6);
        System.out.println("list1:"+list1);
        System.out.println("L:"+L);
        
    }
}

 

toArray()---返回列表集合元素组成的数组

 用法:Object[] a = list1.toArray(); 

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class Demo4 {
    private static Object String;

    public static void main(String[] args) {

        System.out.println("----------------------------------------");
        List<String> list1 = new LinkedList<>();
        list1.add("aa");
        list1.add("eee");
        list1.add("hello");
        list1.add("world");
        list1.add("java");
        list1.add("hello");
        list1.add("student");
        System.out.println("list1:"+list1);

        List<Integer> list2 = new LinkedList<Integer>();
        list2.add(54);
        list2.add(33);
        list2.add(66);
        list2.add(12);
        list2.add(88);
        list2.add(36);
        System.out.println("list2:"+list2);
        System.out.println("----------------------------------------");

        Object[] a = list1.toArray();
        Object[] b = list2.toArray();
        System.out.println("a:"+ Arrays.toString(a));
        System.out.println("b:"+Arrays.toString(b));
        
    }
}

 

HashMap类 

构造方法有4种如下:

 类方法:

clear()---删除所有键值对映射 

 

用法:hm.clear();

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        hm1.put(6,s6);

        //创建映射键值对视图
        Set<Map.Entry<Integer, Student1>> st = hm1.entrySet();
        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it = st.iterator();
        //打印每个元素
        while (it.hasNext()){
            System.out.println(it.next());
        }

        System.out.println("---------------------------------------------------");
        //清空映射里的元素
        hm1.clear();
        //创建映射键值对视图
        st = hm1.entrySet();
        //打印映射键值对视图
        System.out.println(st);
        
    }
}

clone()---浅复制映射

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        hm1.put(6,s6);

        //创建映射键值对视图
        Set<Map.Entry<Integer, Student1>> st1 = hm1.entrySet();
        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it1 = st1.iterator();
        //打印每个元素
        while (it1.hasNext()){
            System.out.println(it1.next());
        }

        int a = hm1.hashCode();
        //打印后面hm1的哈希码
        System.out.println(a);
        System.out.println("---------------------------------------------------");

        //hm1.clone()返回Object对象
        Object hm2 = hm1.clone();
        //打印hm2
        System.out.println(hm2);
        int b = hm2.hashCode();
        //打印后面hm2的哈希码
        System.out.println(b);
    }
}

hm1和hm2的哈希码相同;浅复制了hm1对象的内容

compute()---计算指定键及其当前映射值满足表达式时,对值做修改,不满足则返回null 

 compute API简单介绍:

//表达式为三目运算
 map.compute(key, (k, v) -> (v == null) ? msg : v.concat(msg))
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;


public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        hm1.put(6,s6);

        //创建映射键值对视图
        Set<Map.Entry<Integer, Student1>> st = hm1.entrySet();


        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it1 = st.iterator();
        //打印每个元素
        while (it1.hasNext()){
            System.out.println(it1.next());
        }

        System.out.println("---------------------------------------------------");
        //表达式为三目运算
        hm1.compute(3,(k,v) -> (v != null)? new Student1("林黛玉",16,96):null);

        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it2 = st.iterator();
        //打印每个元素
        while (it2.hasNext()){
            System.out.println(it2.next());
        }
    }
}

如下图对值进行了修改: 

 

computeIfAbsent()---如果键未关联或值为空,将新值赋值给其值;不为空则原值不变

 用法:

map.computeIfAbsent(键值对键的值,k -> 键值对的值);

用法
map.computeIfAbsent(key, k ->  value);

值为空时:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;


public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        Student1 s7 = new Student1("贾探春", 14, 82.5);
        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        //值为空时
        hm1.put(7,null);
        hm1.put(6,s6);

        //创建映射键值对视图
        Set<Map.Entry<Integer, Student1>> st = hm1.entrySet();


        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it1 = st.iterator();
        //打印每个元素
        while (it1.hasNext()){
            System.out.println(it1.next());
        }

        System.out.println("---------------------------------------------------");
        
        hm1.computeIfAbsent(7, k -> new Student1("贾探春", 15, 82.5));
        
        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it2 = st.iterator();
        //打印每个元素
        while (it2.hasNext()){
            System.out.println(it2.next());
        }
    }
}

值不为空时:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        Student1 s7 = new Student1("贾探春", 14, 82.5);
        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        //值不为空时
        hm1.put(7,s7);
        hm1.put(6,s6);

        //创建映射键值对视图
        Set<Map.Entry<Integer, Student1>> st = hm1.entrySet();


        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it1 = st.iterator();
        //打印每个元素
        while (it1.hasNext()){
            System.out.println(it1.next());
        }

        System.out.println("---------------------------------------------------");

        hm1.computeIfAbsent(7, k -> new Student1("贾探春", 15, 82.5));

        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it2 = st.iterator();
        //打印每个元素
        while (it2.hasNext()){
            System.out.println(it2.next());
        }
    }
}

 值的结果不变:

 

computeIfPresent()---指定的键,若不为空,则修改其值 

 用法:

map.computeIfPresent(键值对键的值,(k,v) -> 键值对的值);

 

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        Student1 s7 = new Student1("贾探春", 14, 82.5);
        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        hm1.put(7,s7);
        hm1.put(6,s6);

        //创建映射键值对视图
        Set<Map.Entry<Integer, Student1>> st = hm1.entrySet();


        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it1 = st.iterator();
        //打印每个元素
        while (it1.hasNext()){
            System.out.println(it1.next());
        }

        System.out.println("---------------------------------------------------");
        
        hm1.computeIfPresent(7,(k,v) -> new Student1("贾惜春", 16, 100));

        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it2 = st.iterator();
        //打印每个元素
        while (it2.hasNext()){
            System.out.println(it2.next());
        }
    }
}

containsKey()---判断查找的映射键是否存在,存在返回true,反之返回false

 boolean a = map.containsKey(键);

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        Student1 s7 = new Student1("贾探春", 14, 82.5);
        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        hm1.put(7,s7);
        hm1.put(6,s6);

        //创建映射键值对视图
        Set<Map.Entry<Integer, Student1>> st = hm1.entrySet();
        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it1 = st.iterator();

        //打印每个元素
        while (it1.hasNext()){
            System.out.println(it1.next());
        }

        System.out.println("---------------------------------------------------");

        boolean a = hm1.containsKey(8);
        System.out.println(a);
        boolean b = hm1.containsKey(6);
        System.out.println(b);
    }
}

 

containsValue()---判断映射中要查找的映射值是否在映射中,在则返回true,反之返回false 

 

 boolean a = map.containsValue(映射的值); 

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        Student1 s7 = new Student1("贾探春", 14, 82.5);
        Student1 s8 = new Student1("尤二姐", 13, 81.5);

        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        hm1.put(7,s7);
        hm1.put(6,s6);

        //创建映射键值对视图
        Set<Map.Entry<Integer, Student1>> st = hm1.entrySet();
        //生成映射迭代器
        Iterator<Map.Entry<Integer, Student1>> it1 = st.iterator();

        //打印每个元素
        while (it1.hasNext()){
            System.out.println(it1.next());
        }

        System.out.println("---------------------------------------------------");

        boolean a = hm1.containsValue(s8);
        System.out.println(a);
        boolean b = hm1.containsValue(s5);
        System.out.println(b);
    }
}

 

entrySet()---将映射的键值对内容成对取出来,生成列表集合元素

 

 

import java.util.HashMap;
import java.util.Map;
import java.util.Set;


public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        Student1 s7 = new Student1("贾探春", 14, 82.5);
        Student1 s8 = new Student1("尤二姐", 13, 81.5);

        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        hm1.put(7,s7);
        hm1.put(6,s6);

        //创建映射键值对视图
        Set<Map.Entry<Integer, Student1>> st = hm1.entrySet();

        System.out.println("打印键值对视图:"+st);

    }
}

返回的为键值对集合: 

 

get()---返回指定键映射到的值,若无值则返回null

 

import java.util.HashMap;

public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        Student1 s7 = new Student1("贾探春", 14, 82.5);
        Student1 s8 = new Student1("尤二姐", 13, 81.5);

        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        hm1.put(7,s7);
        hm1.put(6,s6);

        Student1 s = hm1.get(6);
        
        System.out.println(s);
        
    }
}

 

isEmpty()---判断映射是否元素为空,空则返回true

import java.util.HashMap;

public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        Student1 s7 = new Student1("贾探春", 14, 82.5);
        Student1 s8 = new Student1("尤二姐", 13, 81.5);

        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        hm1.put(7,s7);
        hm1.put(6,s6);

        boolean a = hm1.isEmpty();
        System.out.println(a);

    }
}

 

keySet()---返回映射键的列表集合

 

 

import java.util.HashMap;
import java.util.Set;

public class Demo4 {
    public static void main(String[] args) {
        HashMap<Integer, Student1> hm1 = new HashMap<>();
        Student1 s1 = new Student1("薛宝钗",19,96);
        Student1 s2 = new Student1("贾宝玉",18,81.5);
        Student1 s3 = new Student1("林黛玉",17,96);
        Student1 s4 = new Student1("王熙凤",23,95);
        Student1 s5 = new Student1("史湘云",18,90);
        Student1 s6 = new Student1("贾迎春",20,80);
        Student1 s7 = new Student1("贾探春", 14, 82.5);
        Student1 s8 = new Student1("尤二姐", 13, 81.5);

        //添加元素
        hm1.put(1,s1);
        hm1.put(2,s2);
        hm1.put(3,s3);
        hm1.put(4,s4);
        hm1.put(5,s5);
        hm1.put(7,s7);
        hm1.put(6,s6);

        //映射键的列表集合
        Set<Integer> ks = hm1.keySet();

        System.out.println(ks);

    }
}

 

merge()---如果指定的键尚未与值关联或与null关联,则将其与给定的非空值关联。

 用法:

map.merge(传入键, 传入值, (oldValue, newValue) -> oldValue+newValue);返回计算后映射的值

import java.util.HashMap;

public class Demo4 {
    public static void main(String[] args) {

        //创建一个HashMap
        HashMap<String, Integer> prices = new HashMap<>();

        // 往 HashMap 插入映射
        prices.put("Shoes", 200);
        prices.put("Bag", 300);
        prices.put("Pant", 150);
        prices.put("Shirt", 150);
        System.out.println("HashMap: " + prices);

        int returnedValue = prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue+newValue);
        System.out.println("Price of Shirt: " + returnedValue);

        // 输出更新后的 HashMap
        System.out.println("Updated HashMap: " + prices);
        
    }
}

 

put()---新增映射键值对

 map.(传入键,传入值);

import java.util.HashMap;

public class Demo4 {
    public static void main(String[] args) {

        //创建一个HashMap
        HashMap<String, Integer> prices = new HashMap<>();

        // 往 HashMap 插入映射
        prices.put("Shoes", 200);
        prices.put("Bag", 300);
        prices.put("Pant", 150);
        prices.put("Shirt", 150);
        System.out.println("HashMap: " + prices);


    }
}

 

putAll()---将另一个映射元素添加到当前映射里

map1.putAll(map2);

import java.util.HashMap;

public class Demo4 {


    public static void main(String[] args) {

        //创建一个HashMap
        HashMap<String, Integer> prices1 = new HashMap<>();
        HashMap<String, Integer> prices2 = new HashMap<>();

        // 往 HashMap 插入映射
        prices1.put("Shoes", 200);
        prices2.put("Bag", 300);
        prices2.put("Pant", 150);
        prices2.put("Shirt", 150);


        prices1.putAll(prices2);
        System.out.println("HashMap: " + prices1);
        
    }
}

 

remove()---根据键删除此映射的键值对,返回的为映射键对应的值

 

 

import java.util.HashMap;

public class Demo4 {


    public static void main(String[] args) {

        //创建一个HashMap
        HashMap<String, Integer> prices2 = new HashMap<>();

        // 往 HashMap 插入映射
        prices2.put("Shoes", 200);
        prices2.put("Bag", 300);
        prices2.put("Pant", 150);
        prices2.put("Shirt", 210);

        //打印最初的prices2
        System.out.println("HashMap: " + prices2);
        System.out.println("-------------------------------------");

        //删除Shirt:150键值对
        int re = prices2.remove("Shirt");
        //打印之后的prices2
        System.out.println("HashMap: " + prices2);
        //打印删除的键值对的值
        System.out.println(re);

    }
}

 

size()---返回键值对的数量

 

import java.util.HashMap;

public class Demo4 {


    public static void main(String[] args) {

        //创建一个HashMap
        HashMap<String, Integer> prices2 = new HashMap<>();

        // 往 HashMap 插入映射
        prices2.put("Shoes", 200);
        prices2.put("Bag", 300);
        prices2.put("Pant", 150);
        prices2.put("Shirt", 210);

        int a = prices2.size();
        System.out.println(a);
        //打印最初的prices2
        System.out.println("HashMap: " + prices2);
        System.out.println("-------------------------------------");

        //删除Shirt:150键值对
        int re = prices2.remove("Shirt");

        int b = prices2.size();
        System.out.println(b);
        //打印之后的prices2
        System.out.println("HashMap: " + prices2);
        //打印删除的键值对的值
        System.out.println(re);

    }
}

 

values()---返回映射中包含的值的集合

 

import java.util.Collection;
import java.util.HashMap;

public class Demo4 {


    public static void main(String[] args) {

        //创建一个HashMap
        HashMap<String, Integer> prices2 = new HashMap<>();

        // 往 HashMap 插入映射
        prices2.put("Shoes", 200);
        prices2.put("Bag", 300);
        prices2.put("Pant", 150);
        prices2.put("Shirt", 210);

        //映射键值对中值的集合
        Collection<Integer> c = prices2.values();
        //打印值的集合
        System.out.println(c);

        //打印最初的prices2
        System.out.println("HashMap: " + prices2);
        System.out.println("-------------------------------------");
    }
}

 

泛型

泛型,即不确定的类型;

应有场景:当设计某个类前期不明确是用什么数据类型时,可使用泛型;

泛型类

public class ClassName<T> {
    private T data;

    public T getData() {
        return data;
    }

    public void setData(T data) {
    this.data = data;

    }
}

泛型接口

public interface IntercaceName<T>{
    T getData();
}
实现接口时,可以选择指定泛型类型,也可以选择不指定,如下:

指定类型:
public class Interface1 implements IntercaceName<String> {

    private String text; @Override public String getData() {

        return text;
    }
}

不指定类型:
public class Interface1<T> implements IntercaceName<T> {

    private T data; @Override public T getData() {

        return data;
    }
}

泛型方法

private static <T> T 方法名(T a, T b) {

}

泛型限制类型

在使用泛型时, 可以指定泛型的限定区域
例如: 必须是某某类的子类或 某某接口的实现类,格式:
<T extends 类或接口1 & 接口2>

泛型中的通配符?

类型通配符是使用?代替方法具体的类型实参。

        1 <? extends Parent> 指定了泛型类型的上届

        2 <? super Child> 指定了泛型类型的下届

        3 <?> 指定了没有限制的泛型类型

作用

1.提高代码复用率

2.泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)

注意

在编译之后程序会采取去泛型化的措施。

也就是说Java中的泛型,只在编译阶段有效。

在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加

类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值