>  기사  >  문자열 길이를 역순으로 정렬합니다(가장 긴 문자열부터 정렬)

문자열 길이를 역순으로 정렬합니다(가장 긴 문자열부터 정렬)

王林
王林앞으로
2024-02-13 23:57:08558검색

PHP 편집기 Strawberry는 흥미로운 문자열 정렬 문제를 제공합니다. 즉, 문자열 길이를 반대로 정렬하는 것입니다. 즉, 가장 긴 문자열이 먼저 옵니다. 이 문제는 내장 기능과 사용자 정의 정렬 기능을 사용하여 해결할 수 있습니다. 정렬 과정에서 각 문자열의 길이를 계산하고 가장 큰 길이부터 가장 작은 길이 순으로 정렬해야 합니다. 다음으로, 이 흥미로운 문자열 정렬 문제를 구현하는 방법을 자세히 설명하겠습니다.

질문 내용

질문을 길이(내림차순)에 따라 정렬하는 orderquestionsbylength() 메서드를 작성해야 하는 연습을 해야 했습니다

다음 코드는 작동하지만 내림차순으로 정렬되지는 않습니다.

으아악

.reversed()를 추가하자마자 내 IDE에서 오류가 발생합니다. 'object'에서 'gettext' 메서드를 확인할 수 없습니다. gettext() 메서드가 있고 .reversed()를 추가하기 전에 작동하더라도

이 문제를 해결하는 방법을 모르고 gpt에서 내 코드가 정확하다고 말하기 때문에 이것이 나를 미치게 만듭니다. (gpt에 의존해야 한다는 것은 아니지만 정수를 내림차순으로 정렬하는 다른 방법이 있고 사용합니다. 문제가 없습니다. with received()

해결 방법

때로는 comparator.comparing 메서드가 .reversed()와 연결될 때 람다 매개 변수의 유형을 올바르게 유추할 수 없기 때문에 이런 일이 발생합니다.

이 문제를 해결하려면 람다 식에 명시적 유형 정보를 제공하면 됩니다. (string question) -> … 修改 orderquestionsbylength 메소드를 사용하는 방법은 다음과 같습니다.

`public void orderQuestionsByLength(){
        Collections.sort(questions,Comparator.comparing(question -> question.getText().length())); 
        for (Question question : questions){                                                       
            System.out.println(question);
        }
    }`

전화comparator#reversed.

문법에 주의하세요. 에서 comparator.comparing 生成比较器后调用 reversed를 사용하세요.

  • comparator.comparing 是一个 static 인스턴스(객체)를 생성하는 메서드 호출.
  • comparator#reversed은 다른 객체를 생성하는 인스턴스 메서드 호출입니다.

chf의 답변에서 지적했듯이 람다에 전달된 매개변수의 데이터 유형을 명시적으로 명시해야 할 수도 있습니다. ( 字符串问题 ) -> ….

으아악

그런데 위와 같이 collections#foreach 和方法引用来折叠 for 루프를 사용할 수 있습니다.

전체 샘플 애플리케이션 코드:

으아악

위 내용은 문자열 길이를 역순으로 정렬합니다(가장 긴 문자열부터 정렬)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제