자바 8 의 흐름 계산 에 대하 여

2726 단어
  • 집합 흐름 식 조작
  • 스 트림 은 직렬 과 병렬 두 가지 가 있 고 직렬 스 트림 의 작업 은 한 스 레 드 에서 순서대로 이 루어 지 며 병렬 스 트림 은 여러 스 레 드 에서 동시에 실 행 됩 니 다.병렬 과 직렬 의 흐름 은 서로 전환 할 수 있 습 니 다. stream. sequential () 을 통 해 직렬 의 흐름 을 되 돌려 주 고 stream. parallel () 을 통 해 병렬 흐름 을 되 돌려 줍 니 다.직렬 흐름 에 비해 병렬 흐름 은 프로그램의 집행 효율 을 어느 정도 향상 시 킬 수 있다
  • .
  • Stream 과 Collection 집합 의 차이 점: Collection 은 정적 데이터 구조 이 고 Stream 은 계산 과 관련 된 것 이다. 전 자 는 주로 메모리 에 저장 되 고 후 자 는 주로 CPU 를 대상 으로 하 며 CPU 를 통 해 계산한다
  • 자바 8 은 스 트림 조작 (Stream) 을 도입 하여 이 조작 을 통 해 집합 (Collection) 에 대한 병행 처리 와 함수 식 조작 을 실현 할 수 있다.조작 반환 결과 에 따라 흐름 식 조작 은 중간 조작 과 최종 조작 두 가지 로 나 뉜 다.최종 작업 은 특정한 유형의 결 과 를 되 돌려 주 고 중간 작업 은 흐름 자 체 를 되 돌려 줍 니 다. 그러면 여러 작업 을 순서대로 연결 할 수 있 습 니 다.흐름 의 동시성 에 따라 흐름 은 직렬 과 병렬 두 가지 로 나 눌 수 있다.흐름 식 조작 은 집합 적 인 여과, 정렬, 맵 등 기능 을 실현 했다.


  •  
    흐름 의 출현 은 더 높 은 성능 을 얻 기 위해 서 이지 만, 흐름 을 사용 하면 성능 이 반드시 향상 된다 는 것 은 아니 므 로, 우 리 는 신중하게 사용 해 야 한다.어색 하 다. 스 트림 으로 계산 하면 훨씬 빠 를 것 이 라 고 생각 했 지만 테스트 결 과 는................................................
    public class StreamTest {
        static class User{
            private int id;
            String name;
    
            public int getId() {
                return id;
            }
    
            public void setId(int id) {
                this.id = id;
            }
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public User(int id, String name) {
                this.id = id;
                this.name = name;
            }
        }
        private static List processData() {
            ArrayList users = new ArrayList();
            //  500w  
            for(int i=0;i<500000;i++){
                users.add(new User(i,"  "+i));
                users.add(new User(++i,"  "+i));
                users.add(new User(++i,"  "+i));
            }
            return users;
        }
    
        public static void main(String[] args) {
            List users = processData();
            long start = System.currentTimeMillis();
          // List c =users.stream().filter(x -> x.getName().startsWith(" ")).filter(x->x.getId()>10000).collect(Collectors.toList());
            ArrayList xx=new ArrayList<>();
            for (User userT:users){
                if(userT.getName().startsWith(" ")&&userT.getId()>10000){
                    xx.add(userT);
                }
            }
            long cost = System.currentTimeMillis()-start;
            System.out.println(cost);
            //System.out.println(xx);
        }
    }

    테스트 결과 흐름 계산 60 +
    for 순환 20 +
    전체적으로 말 하면 스 트림 컴 퓨 팅 은 lambda 를 도입 하여 많이 예 뻐 보 였 지만 실제 사용 한 결 과 는 당신 이 생각 하 는 것 과 다 를 수 있 습 니 다!

    좋은 웹페이지 즐겨찾기