Update CharBag
This commit is contained in:
parent
a442e1e92a
commit
aa701961c8
@ -8,15 +8,29 @@ public class ArrayCharBag implements CharBag {
|
|||||||
private List<Char> chars = new ArrayList<>();
|
private List<Char> chars = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void add(Char character) {
|
public int add(Char character) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while(Util.comparePositions(chars.get(i).position(), character.position()) < 0) i++;
|
// TODO: use binary search
|
||||||
|
while(i < chars.size() && Util.comparePositions(chars.get(i).position(), character.position()) < 0) i++;
|
||||||
chars.add(i, character);
|
chars.add(i, character);
|
||||||
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void remove(Char character) {
|
public int remove(Char character) {
|
||||||
|
int i = 0;
|
||||||
|
// TODO: use binary search
|
||||||
|
while(i < chars.size() && Util.comparePositions(chars.get(i).position(), character.position()) < 0) i++;
|
||||||
|
if(i == chars.size() || Util.comparePositions(chars.get(i).position(), character.position()) != 0) return -1;
|
||||||
chars.remove(character);
|
chars.remove(character);
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return chars.stream()
|
||||||
|
.map(c -> c.value())
|
||||||
|
.reduce(new StringBuilder(), (b, s) -> b.append(s), (a, b) -> a.append(b)).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
package me.mrletsplay.shareclientcore.document;
|
package me.mrletsplay.shareclientcore.document;
|
||||||
|
|
||||||
public record Char(Identifier[] position, int lamport, String value) {
|
public record Char(Identifier[] position, int lamport, String value) {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
@ -6,7 +6,18 @@ public interface CharBag {
|
|||||||
// public Character findBefore(PositionIdentifier position);
|
// public Character findBefore(PositionIdentifier position);
|
||||||
// public Character findAfter(PositionIdentifier position);
|
// public Character findAfter(PositionIdentifier position);
|
||||||
|
|
||||||
public void add(Char character);
|
/**
|
||||||
public void remove(Char character);
|
* Adds a character to the bag and returns the index it was inserted at
|
||||||
|
* @param character The character to add
|
||||||
|
* @return The index it was inserted at
|
||||||
|
*/
|
||||||
|
public int add(Char character);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes a character from the bag and returns the index it was located at, or -1 if it was not contained in the bag
|
||||||
|
* @param character The character to remove
|
||||||
|
* @return The index it was located at
|
||||||
|
*/
|
||||||
|
public int remove(Char character);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user