java8에서 lamba 표현식의 사용
lamba 표현식을 배우는 것은 매우 중요합니다. 자바가 많이 좋아졌다는 것을 알게 될 것입니다.
(0) 함수식 인터페이스
오직 한 가지 방법의 인터페이스를 함수식 인터페이스라고 부른다
JButton jButton = new JButton("123");
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {}});
... 과 같다
jButton.addActionListener(e->System.out.println("Hello world"));
jButton.addActionListener((e)->System.out.println("Hello world"));
jButton.addActionListener((ActionEvent e)->System.out.println("Hello world"));
jButton.addActionListener((ActionEvent e)->{System.out.println("Hello world");return;});
a. 규칙A->B
A 섹션은 전송 방법의 매개 변수입니다.
B 부분은 함수체입니다.
매개 변수 유형 및 반환 유형
매개 변수가 하나이고 그 유형이 유도될 수 있을 때, 이 매개 변수 목록 밖의 괄호는 생략될 수 있다
함수체가 하나의 문장만 있고 반환 형식이 유도될 수 있을 때 {} 생략가능
b. 예
Runnable runnable = ()->System.out.println(sign);
Runnable runnable2 = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub}
};
run
System.out.println(sign) run
Comparator<Integer> lol = (x,y)->x-y;
Comparator<Integer> lol = (x,y)->{System.out.println(x+y);return x-y;};
new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
return 0;
}
};
익명 내부 클래스를 통해compare 방법은 두 개의 매개 변수가 필요하다는 것을 알고 있습니다.이 때 컴파일은 Comparator
c. 깊이 들어가다
lamba 표현식은 함수,java로 볼 수 있습니다.util.function은 자주 사용하는 함수식 인터페이스를 정의합니다
http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
BiFunction
T는 첫 번째 매개변수를 나타냅니다.
U는 두 번째 매개변수를 나타냅니다.
R은 반환 값을 나타냅니다.
이 테이블은 T, U, R 모두 컴파일러가 상하문에 따라 유형을 유도해야 한다
Consumer
그래서 한 방법이 람바 표현식을 필요로 할 때 매개 변수의 표현 형식은java이다.util.function에서 정의된 스타일
(2) 메소드 참조
메소드 참조는 Lamba 표현식의 단순화입니다.
클래스 이름::메서드 이름(대상 메서드, 클래스 메서드)
int[] oop = {3,1,2,1};
static void sayHello(Integer name)
{
System.out.println(123);
}
Arrays.stream(oop).forEach(Test::sayHello);
Arrays.stream(oop).forEach(s->Test.sayHello(s));
구조 방법 참조:Class::new배열 구성 방법 참조: TypeName[]:new
(3) 유형 변환 강제
때때로 컴파일러가 상하문을 통해 유도한 반환 형식이 실제 형식과 맞지 않을 때 입력 형식 변환이 필요하다
Stream<Object> strings = shapelist.stream().<Object>map(s->s.getColor());
s.getColor())
s.getColor()는 String으로 돌아옵니다.(4)lamba 표현식이 자바 대상에서의 응용
너는 어떤 자바 대상에서lamba 표현식을 응용해 보아야 한다. 통칙은 이 대상을java로 바꾸는 것이다.util.stream, 흐름은 직렬 병행의 구분이 있습니다!병렬 흐름 키워드 parallelStream
배열 배열.stream()
List、Set .stream()
String String.chars
...
java.util.stream은 흐르는 데이터를 조작하는 데 많은 방법을 제공했으니 한번 해 봅시다
http://docs.oracle.com/javase/8/docs/api/
자바 8 영어 API, 중국어를 찾을 수 없는...
(2) 흐름 전체에 대한 조작
예를 들어 우리는 하나의 흐름의 총체를 구할 수 있다
int sum = Arrays.stream(oop).sum();
int sum1 = Arrays.stream(oop).reduce(0,(x,y)->x+y);
(3) 집합 간의 변환우리는 ArrayList
a.map()
이 방법은 비추는 뜻(처음에 나는 HashMap을 연상했다), 그리고mapToDouble 등
b.collect()
collect () 는 Collectors 유형의 매개 변수를 받아들여 흐름을 다시 결합합니다.
Collectors는 컬렉터입니다. Collectors.toList(),Collectors.toMap()、Collectors.그룹 By 등
c. 예
public class Shape
{
private String color;
public Shape() {
// TODO Auto-generated constructor stub
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Shape(String color)
{
this.color = color;
}
}
ArrayList<String> colorList = new ArrayList<String>(){
{
add("Red");
add("Blue");
add("Yellow");
}
};
List<Shape> shapeList = colorList.stream().map(Shape::new).collect(Collectors.toList());
List<String> colos = shpaeList.stream().map(s->s.getColor()).collect(Collectors.toList());
Set<String> colosSet = shpaeList.stream().map(s->s.getColor()).collect(Collectors.toSet());
Map<String, String> colorMap = colorList.stream().collect(Collectors.toMap(a->a,s->s));
Map<String,Shape> shapesMap = shpaeList.stream().collect(Collectors.toMap(s->s.getColor(), s->s));
Eclipse에서 getColor () 메서드를 누를 수 없습니다. 잘못된 줄 알았는데...
Map<String,Set<Shape>> shapeMapSet = shpaeList.stream().collect(Collectors.groupingBy(s->s.getColor(),Collectors.toSet()));
Map<String,Map<String, List<Shape>>> shapeMap3 = shpaeList.stream().collect(Collectors.groupingBy(s->s.getColor(),Collectors.groupingBy(s->s.getColor(),Collectors.toList())));
(4) 집합 자체의 조종새로운 집합이 생기지 않고 기존 집합을 바꾸려면 사용할 수 있다
Iterable.forEach(Consumer),Collection.removeAll(Predicate),List.replaceAll(UnaryOperator),List.sort(Comparator) Map.computeIfAbsent()
shpaeList.sort(Comparator.comparing(Shape::getColor));
위에서 말한 것은 편집자가 여러분께 소개한java8에서 lamba표현식의 사용입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Liquibase】DB 작성·테이블 정의 변경신규 스타터 프로젝트 작성 Liquibase와 MySQL 선택 application.properties에 DB 정보 넣기 MySQL에서 "testdatabase"라는 데이터베이스 만들기 빌드 종속성 추가 build....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.