09
Окт
2015

Как привести массив byte[] к виду CharSequence?

Нужно написать класс AsciiCharSequence, который реализует хранение последовательности ASCII-символов в массиве байт. По сравнению с классом String, хранящим каждый символ как char, AsciiCharSequence будет занимать меньше памяти.

Класс AsciiCharSequence должен:

  • реализовывать интерфейс java.lang.CharSequence;

  • иметь конструктор, принимающий массив байт;

  • определять методы length(), charAt(), subSequence() и toString()

Ну вот я почти написал:

public class AsciiCharSequence implements CharSequence {

     byte[] a1;

  public AsciiCharSequence(byte[] a){  //Конструктор класса
        a = this.a1;
    }

    @Override
    public String toString() {    //Переопределение toString()
        return "AsciiCharSequence{" +
                "a1=" + Arrays.toString(a1) +
                '}';
    }

    @Override
    public int length(){
        return a1.length;
    }; //Переопределение length()

    @Override
    public char charAt(int index){      //Переопределение charAt()
        char t000 = (char)a1[index];
        return t000;
    }

    @Override
    public CharSequence subSequence(int start, int end){  //Переопределение subSequence()
        CharSequence buf[] = new CharSequence[end - start];

       for(int i=start; i<=end;i++)
       {
           byte t = a1[i-start];
          buf[i]=(CharSequence)t;
       }
         return buf[end -start];
    }
}

Самый проблемный участок = Переопределение subSequence(). Это последние 12 строчек с конца. Проблема такая: я никак не могу написать код, чтобы метод возвращал корректный тип (CharSequence?). Если алгоритм формирования массива более-менее понятен, то преобразование массива byte[] в CharSequence совсем не ясен. Сам метод должен применяться на массив символов и возвращать массив символов с индексами лежащими от start до end. К примеру,

String s0 = "Вова и Дима козлы";
   s0.subSequence(14,16) 

Должен возвращать "злы".

Источник: https://ru.stackoverflow.com/questions/457047/%D0%9A%D0%B0%D0%BA-%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%81%D1%82%D0%B8-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2-byte-%D0%BA-%D0%B2%D0%B8%D0%B4%D1%83-charsequence

Share

Тебе может это понравится...