Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #25365
| From | Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: StringBuilder.append and CharSequence |
| Date | 2013-09-26 23:11 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <l227v3$f6i$1@dont-email.me> (permalink) |
| References | <slrnl45s71.mol.avl@gamma.logic.tuwien.ac.at> <l1vfg6$mi$1@dont-email.me> <l202uq$ae1$1@dont-email.me> <slrnl48s79.mol.avl@gamma.logic.tuwien.ac.at> |
On 2013-09-26 19:37, Andreas Leitgeb allegedly wrote:
> markspace <markspace@nospam.nospam> wrote:
>> On 9/25/2013 1:02 PM, markspace wrote:
>>> On 9/25/2013 7:19 AM, Andreas Leitgeb wrote:
>>>> Is it safe to use "stringBuilder.append(this);" in a CharSequence
>>>> implementation's .toString(), or could this lead to a recursive
>>>> loop, if some version of a Java class library implements the
>>>> append() for CharSequence by using it's toString() ?
>>> [...]
>> Actually, I mis-read your problem statement, I think. Having
>> implemented a couple of CharSequence classes, the only rational approach
>> would be to copy the chars out of a CharSequence one at a time with a
>> loop and charAt(). toString() must create an immutable String and so
>> must create a new buffer, so that's an extra buffer copy, which seems
>> undesirable no matter who's implementing the append() method.
>
> That's my point. My outset is, that eventually I need to append a number
> of copies of some particular char to a StringBuilder, and my approach is:
>
> static class ChSeq implements CharSequence {
> int m_len; char m_ch;
> public ChSeq(int len, char ch) { m_len = len; m_ch = ch; }
> public char charAt(int pos) { return m_ch; }// OutOfBounds? meh!
> public int length() { return m_len; }
> public String toString() { // just 'cause it's required...
> return new StringBuilder(this).toString(); }
> public CharSequence subSequence(int fr,int to) {
> return ChSeq(to-fr,m_ch); }
> } // not yet tested!
> // then later:
> sb.append( new ChSeq(n,ch) );
>
> This would look like a reasonable OO approach to the problem, but
> if StringBuilder.append actually used my .toString(), then it would
> of course crash&burn.
>
> If instead I had to implement the toString() by doing the loop myself
> and hammer the char n times to the temporary StringBuilder, then I'd
> instead just write a static method that would take sb,n,ch and feed n
> copies of ch to sb.
>
I'd make the toString() as follows to be on the safe side:
char[] cs = new char[ m_len ];
Arrays.fill( cs, m_ch );
return new String(cs);
If that hits performance, then you have got a conflict between your goal
of being OO and that of performance, and you'll have to scrap one.
--
DF.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-25 14:19 +0000
Re: StringBuilder.append and CharSequence markspace <markspace@nospam.nospam> - 2013-09-25 13:02 -0700
Re: StringBuilder.append and CharSequence markspace <markspace@nospam.nospam> - 2013-09-25 18:34 -0700
Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-26 17:37 +0000
Re: StringBuilder.append and CharSequence Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2013-09-26 23:11 +0200
Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-27 13:30 +0000
Re: StringBuilder.append and CharSequence Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2013-09-27 19:31 +0200
Re: StringBuilder.append and CharSequence markspace <markspace@nospam.nospam> - 2013-09-27 13:45 -0700
Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-27 23:16 +0000
Re: StringBuilder.append and CharSequence Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2013-09-29 04:58 +0200
Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-30 20:02 +0000
Re: StringBuilder.append and CharSequence Arne Vajhøj <arne@vajhoej.dk> - 2013-09-25 20:57 -0400
Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-26 18:01 +0000
Re: StringBuilder.append and CharSequence Arne Vajhøj <arne@vajhoej.dk> - 2013-09-26 15:47 -0400
Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-26 20:48 +0000
Re: StringBuilder.append and CharSequence Arne Vajhøj <arne@vajhoej.dk> - 2013-09-26 16:58 -0400
Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-09-27 12:52 +0000
Re: StringBuilder.append and CharSequence Arne Vajhøj <arne@vajhoej.dk> - 2013-10-04 20:59 -0400
Re: StringBuilder.append and CharSequence Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-10-05 12:51 +0000
Re: StringBuilder.append and CharSequence Sven Köhler <remove-sven.koehler@gmail.com> - 2013-09-27 15:41 +0300
csiph-web