草庐IT

Set集合

全部标签

java - Java 中的 Set 不允许重复,但它接受具有相同参数的 StringBuffer 对象。为什么?

publicstaticvoidmain(String[]args){HashSetset=newHashSet();set.add(newStringBuffer("abc"));set.add(newStringBuffer("abc"));set.add(newStringBuffer("abc"));set.add(newStringBuffer("abc"));System.out.println(set);}输出:[abc,abc,abc,abc]在上面的代码中,我多次添加了StringBuffer("abc")的对象,Set添加了它,但Set从不添加重复项。

java - 如何创建一个通用的 HashMap 来插入集合和对象?

如何实例化一个HashMap来放置集合和对象?//it'swrongMapparams=newHashMapListlstperson=getPerson();params.put("person",lstperson);params.put("doc",objectDoc);params.put("idSol",newLong(5));service.method(params);//methodpublicvoidmethod(Mapparams); 最佳答案 将HashMap声明为Mapparams=newHashMap();

java - 监视对集合的更改

假设您有以下javabean:publicclassMyBean{privateListnames=newArrayList();publicvoidaddName(Stringname){names.add(name);fireNamesPropertyChange(name);}}您通常如何为集合实现属性更改事件?您是否尝试使用index属性,它似乎更适用于数组而不是集合? 最佳答案 (注意:我在意识到自己的一些错误后更新了这篇文章,所以这不是原来的,而是更精致的)为此,我将创建两个新接口(interface),ListList

Java : set a Component on top of another

我正在用Java编写程序。我有一个主JPanel,上面添加了两个JPanel和一个Canvas。我的目标是在运行程序时调整Canvas的大小。当我最大化Canvas时,我希望它始终位于其他组件之上。如何为我的Canvas设置这个属性? 最佳答案 您可以将主JPanel替换为JLayeredPanel。分层面板可让您指定某些子组件应分层放置在其他子组件之上。即:JLayeredPanepane=newJLayeredPane();JLabelontop=newJLabel("Ontop");JLabelbehind=newJLabel

java - 数组、列表、集合和映射是可迭代的。还有什么?

即使只有List和Set实现了接口(interface)Iterable,我相信array,list,set和map都是所有iterable对象,因为我们可以通过foreach循环使用它们:for(Strings:newString[0]);for(Strings:newArrayList());for(Strings:newHashSet());for(Entryentry:newHashMap().entrySet());Map的情况可能有点不同,但让我们将其视为键值列表(它实际上是什么)。从可迭代的理解开始,我是否在以下方法中缺少类型?publicbooleanisIterabl

java - 我应该迭代一个 Java 集合来获取子集,还是应该先将它转换为数组然后迭代来获取它?

我正在调用一个API,它返回一个对象集合。我想获取对象的子集。我正在考虑两种解决方案。哪一个会给我更好的表现?根据我的理解,toArray()调用主要会遍历集合一次。如果那是真的,那么解决方案会更好吗?解决方案1-publicstaticListget(UUIDrecordid,intstart,intcount){Listnames=newArrayList();...Collectioncolumnnames=result.getColumnNames();intindex=0;for(UUIDcolumnname:columnnames){if((index>=start)&&(

java - 根据对象属性将 java 集合拆分为子集合

我有一个MyObjects列表...MyObject{intid,Stringname}。现在我想将列表拆分为具有相同“id”值的子列表,任何人都可以建议一种有效的方法来执行此操作。 最佳答案 如果您使用的是JDK1.8,您可以使用如下优雅的解决方案:Map>myObjectsPerId=myObjects.stream().collect(Collectors.groupingBy(MyObject::getId)); 关于java-根据对象属性将java集合拆分为子集合,我们在Sta

java - 如何在 java 中从 Iterable 创建集合?

例如,我有一组几何图形:Setfigures;有两种图形:正方形和圆形。我想使用googlecollections获取一组正方形:Iterables.filter(figures,squarePredicate);但是过滤器方法返回Iterable...我如何从Iterable创建Set?(不在Iterable上使用循环) 最佳答案 我认为您需要重新考虑您的要求。你需要一组正方形。为什么?集合只为您提供唯一性和迭代性。您在Iterable中具有唯一性,因为源是一个集合,并且您可以迭代Iterable中的项目。那你为什么需要这套?只有

java - Set.contains() 如何决定它是否是一个子集?

我希望下面的代码能给我一个子集和一个补充集。但实际上,结果显示“错误:这不是一个子集!”it.next()得到什么以及如何修改我的代码以获得我想要的结果?谢谢!packageChapter8;importjava.util.HashSet;importjava.util.Iterator;importjava.util.Set;publicclassThree{intn;Setset=newHashSet();publicstaticvoidmain(Stringargs[]){Threethree=newThree(10);three.display(three.set);Sette

java - java中的集合框架需要什么?

Java中的集合框架需要什么,因为所有数据操作(排序/添加/删除)都可以使用数组进行,而且数组适合内存消耗,并且与集合相比性能也更好。谁能给我一个实时数据导向的例子,它显示了这些实现(数组/集合)的区别。 最佳答案 数组不可调整大小。JavaCollectionsFramework提供了许多不同的有用数据类型,例如链接列表(允许在恒定时间的任何位置插入)、可调整大小的数组列表(类似于Vector但更酷)、红黑树、哈希基于映射(类似于Hashtable但更酷)。JavaCollectionsFramework提供了抽象,因此您可以将列