Tag: 番石榴

从Set中删除“第一个”对象

在某些情况下,我需要逐出Java Set最旧的元素。 该集合使用LinkedHashSet实现,这使得这很简单:只需删除set的迭代器返回的第一个元素: Set mySet = new LinkedHashSet(); // do stuff… if (mySet.size() >= MAX_SET_SIZE) { Iterator iter = mySet.iterator(); iter.next(); iter.remove(); } 这很难看:如果我使用的是SortedSet我可以用1行做3行(由于其他原因,这里不能选择SortedSet ): if (/*stuff*/) { mySet.remove(mySet.first()); } 那么有没有更简洁的方法, 没有: 更改Set实现,或 写一个静态的实用方法? 利用番石榴的任何解决方案都很好。 我完全清楚套装没有固有的顺序。 我要求删除迭代顺序定义的第一个条目。

Java-获取列表中最常见的元素

Java或Guava是否有能够返回列表中最常见元素的东西? List listOfNumbers= new ArrayList(); [1,3,4,3,4,3,2,3,3,3,3,3] 返回3

关于CharMatcher.WHITESPACE实现

当我查找CharMatcher的实现并注意一个字段WHITESPACE_MULTIPLIER=1682554634 ,我将此值设置为1582554634 ,运行测试用例CharMatcherTest#testWhitespaceBreakingWhitespaceSubset ,当然它失败了。 之后,我将testWhitespaceBreakingWhitespaceSubset更改为仅在没有断言的情况下调用WHITESPACE.apply((char)c) ,在WHITESPACE.matches的方法中打印索引 int index=(WHITESPACE_MULTIPLIER * c) >>> WHITESPACE_SHIFT) 终于发现该指数在将WHITESPACE_MULTIPLIER从1682554634更改为WHITESPACE_MULTIPLIER后发生了碰撞 毫无疑问,1682554634设计得很好,我的问题是如何推断这个“神奇数字” ? 根据Martin Grajcar的提议 ,我尝试按如下方式编写“幻数生成器”并进行工作: char[] charsReq = WHITESPACE_TABLE.toCharArray(); Arrays.sort(charsReq); OUTER: for (int WHITESPACE_MULTIPLIER_WANTTED = 1682553701; WHITESPACE_MULTIPLIER_WANTTED <= 1682554834; WHITESPACE_MULTIPLIER_WANTTED++) { int matchCnt = 0; for (int c = 0; c >> WHITESPACE_SHIFT); if (position >= 0 && index == c) { […]

使用分隔符解析字符串并将其加载到地图中?

我有以下字符串,其格式为key1=value1, key2=value2 ,我需要将其加载到地图(Map)作为key=value所以我需要在逗号上拆分,然后加载cossn作为关键, 0其价值。 String payload = “cossn=0, abc=hello/=world, Agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36”; HashMap holder = new HashMap(); String[] keyVals = payload.split(“, “); for(String keyVal:keyVals) { String[] parts = keyVal.split(“=”,2); holder.put(parts[0], parts[1]); } 我在这行holder.put(parts[0], parts[1]);得到java.lang.ArrayIndexOutOfBoundsException holder.put(parts[0], parts[1]); 并且它正在发生这个字符串Agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36 […]

按列表类型属性的Java排序对象

我有以下对象: public class Shipping { String name; List methods; } public class Method { String serviceType; String cost; } 我有: List shippings; 我想通过返回最便宜费用的方法对运费进行排序。 例: shipping: “Josh” with 2 methods: “Premium”,”5″ and “Basic”,”3″ shopping: “Nash” with 2 methods: “Prem”, “7” and “Base”,”2″ 会这样排序: shopping: “Nash” with 2 methods: “Base”,”2″ and “Prem”, “7” shopping: “Josh” with 2 […]

无法从Guava解析通用参数TypeToken

我正在开发一个用于为Selenium测试框架构建通用菜单的框架,我一直在使用Guava TypeToken来解析通用参数的类型,但现在我遇到了类型令牌无法解析参数的问题: 我有一个生成菜单选项的构建器的abstract基class : public abstract class AbstractMenuOptionBuilder { protected final TypeToken<AbstractMenuOptionBuilder> typeToken = new TypeToken<AbstractMenuOptionBuilder>(getClass()) { }; public abstract O create(); } 这是构建器的具体class : public class MenuOptionBuilder extends AbstractMenuOptionBuilder { public O create() { TypeToken genericOptionParam = typeToken.resolveType(AbstractMenuOptionBuilder.class.getTypeParameters()[0]); Class optionClass; try { optionClass = (Class) Class.forName(genericOptionParam.getType().getTypeName()); } catch(ClassNotFoundException e) { log.catching(e); return null; } […]

在Google Guava(Java)中,如何批量设置ArrayTable的值?

我有一个二维数据数组,例如V[][] ,我想在ArrayTable实例上批量设置。 我必须反复调用ArrayTable.put(R rowKey, C columnKey, V value) ? 我找不到合适的构造函数/静态创建帮助器或方法,例如putAll(V[][] valueArr) 。 请指教。

Collections.reverse()vs Lists.reverse()哪个更快?

我对以下问题很感兴趣:Collections.reverse()vs Lists.reverse()哪个更快? 谢谢。

如何在java中正确覆盖equalsinheritance?

我正在使用hibernate和id …用于持久性(这就是为什么它在比较中被省略)。 (另外,使用google guava helper equals) HolidayPackageVariant: public abstract class HolidayPackageVariant { private Integer idHolidayPackageVariant; private HolidayPackage holidayPackage; private String typeHolidayPackage; @Override public boolean equals(Object obj) { if (obj == this) return true; if(obj == null) return false; if (getClass().equals(obj.getClass())) { final HolidayPackageVariant otherPackageVariant = (HolidayPackageVariant) obj; return Objects.equal(getTypeHolidayPackage(),otherPackageVariant.getTypeHolidayPackage()) && Objects.equal(getHolidayPackage(), otherPackageVariant.getHolidayPackage()); } return false; […]

清洁番石榴方式来处理可能为空的集合

我有一个方法,它接受一个参数Collection foos ,它可能是NULL。 我希望最终将输入的本地副本作为ImmutableSet 。 现在我的代码看起来像这样: if (foos == null) { this.foos = ImmutableSet.of(); } else { this.foos = ImmutableSet.copyOf(foos); } 有更清洁的方法吗? 如果foos是一个简单的参数,我可以做类似Objects.firstNonNull(foos, Optional.of())东西Objects.firstNonNull(foos, Optional.of())但我不确定是否有类似处理集合的东西。