Java中的::
Posted lusonnet
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的::相关的知识,希望对你有一定的参考价值。
今天在练习SpringBoot的时候,看到了以下这种写法:
//实体类:
@Data
public class Book
private Integer id;
private String type;
private String name;
private String description;
//测试类
//实现功能:关键字查询
@Test
void testByLike()
String name = "Spring";
LambdaQueryWrapper<Book> lambdaQueryWrapper = new LambdaQueryWrapper<Book>();
lambdaQueryWrapper.like(name!=null,Book::getName,name);
bookDao.selectList(lambdaQueryWrapper);
可以看到,测试类中使用到了这种写法:Book::getName
,虽然平时看到有的源码使用到了这种写法,但我使用的还是比较少。因此对这种写法不是很了解,接下来我们就来讨论一下::
:
经查询,该用法是Java8引入的新特性:方法引用。其通常与lambada表达式结合来简化代码。
通过Java引用,我们能够直接引用已有java类或对象的方法或构造器。
Book::getName
即为:获取Book中的name属性所对应的值。
在上述代码中,该写法可以让编写者避免输错属性名。
当然,不是所有情况都能使用::
方法引用。
其使用有一定的条件:lambada表达式的主体仅包含一个表达式,且lambada表达式只调用一个已经存在的方法;被引用的方法的参数列表与lambada表达式的输入输出一致。
图源网络
通过上面这个图,可以很清晰的观察到方法引用使用的条件–》必须进行单纯的引用。像getter和setter方法就是单纯的。
Java中的ArrayList 重要方法补充
Java 中的 ArrayList 重要方法补充
文章目录
Java 中的 ArrayList retainAll()方法
数组列表 的**retainall()**方法用于移除指定集合中未包含的所有数组列表元素,或者保留当前数组列表实例中所有匹配元素,这些元素匹配作为参数传递给该方法的集合列表中的所有元素。 语法:
public boolean retainAll(Collection C)
**参数:**C是包含要保留在列表中的元素的集合。 **返回值:**如果调用 else 导致列表发生变化,则该方法返回布尔值 true,否则返回 false。 例外:
- ClassCastException:如果此数组列表元素的类与传递的集合不兼容。这是可选的。
- NullPointerException:如果列表包含空元素,并且传递的集合不允许空元素,或者如果指定的集合为空。这也是可选的。
public static void testRetainAll()
ArrayList<String> list1 = new ArrayList<String>();
list1.add("pen");
list1.add("pencil");
list1.add("paper");
ArrayList<String> list2 = new ArrayList<String>();
list2.add("pen");
list2.add("paper");
list2.add("books");
list2.add("rubber");
System.out.println("list1 Contains :" + list1);
System.out.println("list2 Contains :" + list2);
list2.retainAll(list1);
System.out.println("\\nAfter Applying list2.retainAll(list1) \\n");
System.out.println("list1 Contains :" + list1);
System.out.println("list2 Contains :" + list2);
Output
list1 Contains :[pen, pencil, paper]
list2 Contains :[pen, paper, books, rubber]
After Applying list2.retainAll(list1)
list1 Contains :[pen, pencil, paper]
list2 Contains :[pen, paper]
Java 中的 ArrayList forEach()方法
数组列表 的 forEach() 方法用于对数组列表中的每个元素执行一定的操作。此方法遍历数组列表的 Iterable 的每个元素,直到该方法处理完所有元素或引发异常。如果方法指定了迭代顺序,则按照迭代顺序执行操作。操作引发的异常被传递给调用方。
语法
public void forEach(Consumer<? super E> action)
**参数:**该方法取一个参数动作,代表每个元素要执行的动作。
**返回:**这个方法不返回任何东西。
**异常:**如果指定的操作为空,此方法将引发 NullPointerException
public static void testForEach()
ArrayList<String> students = new ArrayList<String>();
students.add("Ram");
students.add("Mohan");
students.add("Sohan");
students.add("Rabi");
students.forEach((n) -> print(n));
students.forEach((n) -> System.out.println(n));
students.forEach(System.out::println);
public static void print(String n)
System.out.println(n);
Output
Ram
Mohan
Sohan
Rabi
Ram
Mohan
Sohan
Rabi
Ram
Mohan
Sohan
Rabi
Java 中的 Arrays.binarySearch()
Arrays.binarySearch() 方法使用二分搜索法算法在给定数据类型的指定数组中搜索指定值。在进行此调用之前,必须按照 Arrays.sort() 方法对数组进行排序。如果没有排序,结果是未定义的。如果数组包含多个具有指定值的元素,则不能保证找到哪一个
语法
public static int binarySearch(data_type arr, data_type key)
**记住:**这里的数据类型可以是任何原始数据类型,例如字节、字符、双精度、int、float、short、long,甚至 object。
参数:
- Array to be searched
- Value to be searched
**返回类型:**搜索关键字的索引,如果包含在数组中;否则,(-(插入点)–1)。插入点定义为将键插入数组的点:大于键的第一个元素的索引,如果数组中的所有元素都小于指定的键,则为. length。请注意,这保证了当且仅当找到密钥时,返回值将为> = 0。
public static void testBinarySearch()
// 数组初始化
byte byteArr[] = 10, 20, 15, 22, 35 ;
char charArr[] = 'g', 'p', 'q', 'c', 'i' ;
int intArr[] = 10, 20, 15, 22, 35 ;
double doubleArr[] = 10.2, 15.1, 2.2, 3.5 ;
float floatArr[] = 10.2f, 15.1f, 2.2f, 3.5f ;
short shortArr[] = 10, 20, 15, 22, 35 ;
// 先进行排序
Arrays.sort(byteArr);
Arrays.sort(charArr);
Arrays.sort(intArr);
Arrays.sort(doubleArr);
Arrays.sort(floatArr);
Arrays.sort(shortArr);
// 目标值
byte byteKey = 35;
char charKey = 'g';
int intKey = 22;
double doubleKey = 1.5;
float floatKey = 35;
short shortKey = 5;
System.out.println(byteKey + " found at index = " + Arrays.binarySearch(byteArr, byteKey));
System.out.println(charKey + " found at index = " + Arrays.binarySearch(charArr, charKey));
System.out.println(intKey + " found at index = " + Arrays.binarySearch(intArr, intKey));
System.out.println(doubleKey + " found at index = " + Arrays.binarySearch(doubleArr, doubleKey));
System.out.println(floatKey + " found at index = " + Arrays.binarySearch(floatArr, floatKey));
System.out.println(shortKey + " found at index = " + Arrays.binarySearch(shortArr, shortKey));
Output
35 found at index = 4
g found at index = 1
22 found at index = 3
1.5 found at index = -1
35.0 found at index = -5
5 found at index = -1
以上是关于Java中的::的主要内容,如果未能解决你的问题,请参考以下文章