Migrate from trove to fastutil

This commit is contained in:
md_5
2025-05-31 12:54:26 +10:00
parent cd1ceb4c31
commit 5dad41034b
8 changed files with 29 additions and 30 deletions

View File

@@ -1,22 +1,22 @@
package net.md_5.bungee.util;
import gnu.trove.strategy.HashingStrategy;
import it.unimi.dsi.fastutil.Hash;
import java.util.Locale;
class CaseInsensitiveHashingStrategy implements HashingStrategy
class CaseInsensitiveHashingStrategy implements Hash.Strategy<String>
{
static final CaseInsensitiveHashingStrategy INSTANCE = new CaseInsensitiveHashingStrategy();
@Override
public int computeHashCode(Object object)
public int hashCode(String object)
{
return ( (String) object ).toLowerCase( Locale.ROOT ).hashCode();
return object.toLowerCase( Locale.ROOT ).hashCode();
}
@Override
public boolean equals(Object o1, Object o2)
public boolean equals(String o1, String o2)
{
return o1.equals( o2 ) || ( o1 instanceof String && o2 instanceof String && ( (String) o1 ).toLowerCase( Locale.ROOT ).equals( ( (String) o2 ).toLowerCase( Locale.ROOT ) ) );
return o1.equals( o2 ) || ( o1 instanceof String && o2 instanceof String && o1.toLowerCase( Locale.ROOT ).equals( o2.toLowerCase( Locale.ROOT ) ) );
}
}

View File

@@ -1,9 +1,9 @@
package net.md_5.bungee.util;
import gnu.trove.map.hash.TCustomHashMap;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap;
import java.util.Map;
public class CaseInsensitiveMap<V> extends TCustomHashMap<String, V>
public class CaseInsensitiveMap<V> extends Object2ObjectOpenCustomHashMap<String, V>
{
public CaseInsensitiveMap()
@@ -13,6 +13,6 @@ public class CaseInsensitiveMap<V> extends TCustomHashMap<String, V>
public CaseInsensitiveMap(Map<? extends String, ? extends V> map)
{
super( CaseInsensitiveHashingStrategy.INSTANCE, map );
super( map, CaseInsensitiveHashingStrategy.INSTANCE );
}
}

View File

@@ -1,9 +1,9 @@
package net.md_5.bungee.util;
import gnu.trove.set.hash.TCustomHashSet;
import it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet;
import java.util.Collection;
public class CaseInsensitiveSet extends TCustomHashSet<String>
public class CaseInsensitiveSet extends ObjectOpenCustomHashSet<String>
{
public CaseInsensitiveSet()
@@ -13,6 +13,6 @@ public class CaseInsensitiveSet extends TCustomHashSet<String>
public CaseInsensitiveSet(Collection<? extends String> collection)
{
super( CaseInsensitiveHashingStrategy.INSTANCE, collection );
super( collection, CaseInsensitiveHashingStrategy.INSTANCE );
}
}

View File

@@ -13,12 +13,12 @@ public class CaseInsensitiveTest
CaseInsensitiveMap<Object> map = new CaseInsensitiveMap<>();
map.put( "FOO", obj );
assertTrue( map.contains( "foo" ) ); // Assert that contains is case insensitive
assertTrue( map.containsKey( "foo" ) ); // Assert that contains is case insensitive
assertTrue( map.entrySet().iterator().next().getKey().equals( "FOO" ) ); // Assert that case is preserved
// Assert that remove is case insensitive
map.remove( "FoO" );
assertFalse( map.contains( "foo" ) );
assertFalse( map.containsKey( "foo" ) );
}
@Test