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 중국어 웹사이트의 기타 관련 기사를 참조하세요!