Лучший способ найти, находится ли строка в списке (без дженериков)

В вашем конкретном случае нет необходимости добавлять поведение к вашему макету.

public class CarServiceTest {

    @Test
    public void create_valid() {
        RabbitTemplate rt = Mockito.mock(RabbitTemplate.class);
        CarService car = new CarService(rt);
        ResponseEntity<String> response = car.create("sedan", "arison");

        assertThat(response).isNotNull();
        assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
    }
}

К вашему сведению, нецелесообразно манипулировать ResponseEntity вне HTTP-адаптера (обычно это bean-компонент с аннотацией @Controller).

А RabbitTemplate#convertAndSend должен обеспечить механизм преобразования , поэтому вам не нужно напрямую использовать Джексона .

Надеюсь, это поможет вам!

26
задан Fabio Gomes 29 October 2008 в 12:37
поделиться

3 ответа

Вы могли использовать AnsiIndexText (константа AnsiString AText, массив константы строки AValues): целое число или MatchStr (константа AText: строка; константа AValues: массив строки): булевская переменная;

Что-то как

Result := (AnsiIndexText('Hi',['Hello','Hi','Foo','Bar']) > -1);

или

Result := MatchStr('Hi', ['foo', 'Bar']); 

AnsiIndexText возвращает индекс с 0 смещениями первой строки, это находит в AValues что AText соответствий нечувствительно к регистру . Если строка, определенная AText, не имеет (возможно нечувствительный к регистру) соответствие в AValues, AnsiIndexText возвращает †“1. Сравнения основаны на локали существующей системы.

MatchStr определяет, соответствует ли какая-либо из строк в массиве AValues строке, определенной AText использование чувствительное к регистру сравнение . Это возвращает true если по крайней мере одна из строк в соответствии массива или ложь если ни одно из строкового соответствия.

Примечание AnsiIndexText имеет нечувствительно к регистру, и MatchStr чувствительно к регистру, таким образом, я предполагаю, что оно зависит от Вашего использования

РЕДАКТИРОВАНИЕ: 03.09.2011 : Просто найденный этим ответом и думал, что я добавлю примечание что, в Дельфи 2010 существует также MatchText функция, которая совпадает с MatchStr, но нечувствительный случай. - Larry

57
ответ дан 28 November 2019 в 06:41
поделиться

Код работами Burkhard, но выполняет итерации напрасно по списку, даже если соответствие найдено.

Лучший подход:

function StringInArray(const Value: string; Strings: array of string): Boolean;
var I: Integer;
begin
  Result := True;
  for I := Low(Strings) to High(Strings) do
    if Strings[i] = Value then Exit;
  Result := False;
end;
7
ответ дан 28 November 2019 в 06:41
поделиться

Вот функция, которая делает задание:

function StringInArray(Value: string; Strings: array of string): Boolean;
var I: Integer;
begin
  Result := False;
  for I := Low(Strings) to High(Strings) do
  Result := Result or (Value = Strings[I]);
end;

На самом деле, Вы действительно сравниваете MyString с каждой строкой в Строках. Как только Вы находите, что тот, соответствующий Вам, может выйти для цикла.

1
ответ дан 28 November 2019 в 06:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: