String[] daysList = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

Теперь заданная входная строка

String getRoutePlanDay = "Thu";

Таким образом, вывод должен быть

output: "Thu", "Fri","Sat","Mon" ,"Tue","Wed".

Аналогично, например: если данная строка

String getRoutePlanDay = "Fri";

 Expected output: "Fri","Sat","Mon" ,"Tue","Wed","Thu"

Итак, как отсортировать список массивов, начиная с заданной входной строки.

 List<String> asSet = new ArrayList<String>(Arrays.asList(daysList));
  //but i couldn't figure out how to use the getRoutePlanDay by comparing with the list and arranging it and storing in string array? 
-6
Star 27 Фев 2018 в 10:57

4 ответа

Лучший ответ

Коллекции .rotate сделает то, что вы хотите

String[] daysArr = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
List<String> daysList = Arrays.asList(daysArr);
String input = "Fri";
int index = daysList.indexOf(input);
if (index > 0) {
    Collections.rotate(daysList, -index);
}
System.out.println(daysList);

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

1
Sergey Prokofiev 27 Фев 2018 в 08:11

Если вы увидите следующий код Получить индекс вашего объекта, с которого вы хотите начать затем получить подсписок из индекса по размеру исходного списка и добавить его в новый список. снова получите подсписок от startindex до getRoutePlanDay для оставшегося списка и добавьте его в новый список, вы получите желаемый результат

            ArrayList<String> dayList = new ArrayList<String>();
            dayList.add("Mon");
            dayList.add("Tue");
            dayList.add("Wed");
            dayList.add("Thu");
            dayList.add("Fri");
            dayList.add("Sat");
            String getRoutePlanDay = "Fri";
            int index = dayList.indexOf(getRoutePlanDay);
            List<String> newList = dayList.subList(index, dayList.size());
            newList.addAll(dayList.subList(0, index));
            System.out.println(newList);

Проверено на ваши входы и работает на моей стороне

0
Dhiraj 27 Фев 2018 в 08:13

Этот код может сделать:

public static void main(String args[]) {

    String[] daysList = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
    int count = daysList.length;
    int ipos = 0,j=1,k=0;
    int flag = 1;
    while (k<count){
        //Getting the input from command line arguement
        if (daysList[k].equals(args[0])){
            ipos = k;
            flag = 1;
            break;
        }else{
            flag = 0;
            k++;
        }            
    }

    j = ipos;
    //getting the output route
    if (flag == 1) {
       int count2 = 0;
       while (j<=count){

            // output[count2] = daysList[j];
            System.out.print(daysList[j] + ",");
            count2 = count2 + 1;
            j = j + 1;
            if (count2 < 6){
                j = j % 6;    
            }else{
                break;
            }           
        }  
    }else{
        System.out.println("The day you enter is not present in the daylist");
    }   
}
0
azro 9 Фев 2019 в 10:40

Алгоритм будет:

  • Создайте новый массив той же длины, что и старый.
  • Найдите индекс вашего стартового дня
  • Скопируйте часть массива с начала дня до конца в новый массив
  • Скопируйте часть массива из индекса 0 в начальный день - 1 в новый массив

Выполнено.

Вы можете использовать System.arraycopy для копирования частей массива в другой.

0
Stefan Winkler 27 Фев 2018 в 08:06