Questions tagged «collections»

集合API为开发人员提供了一组类和接口,使处理对象集合更加容易。

23
如何将Java对象(bean)转换为键值对(反之亦然)?
说我有一个非常简单的java对象,它仅具有一些getXXX和setXXX属性。该对象仅用于处理值,基本上是记录或类型安全(和性能)映射。我经常需要将此对象转换为键值对(字符串或类型安全)或从键值对转换为该对象。 除了反射或手动编写代码来进行此转换之外,实现此目的的最佳方法是什么? 一个示例可能是通过jms发送此对象,而不使用ObjectMessage类型(或将传入消息转换为正确的对象)。

8
如何使ArrayList成为线程安全的?用Java解决问题的另一种方法?
我有一个ArrayList,我想用来容纳RaceCar对象,这些对象在执行完后立即扩展Thread类。名为Race的类使用RaceCar对象完成执行后调用的回调方法来处理此ArrayList。回调方法addFinisher(RaceCar finisher)将RaceCar对象添加到ArrayList。这应该给出线程完成执行的顺序。 我知道ArrayList不同步,因此不是线程安全的。我尝试使用Collections.synchronizedCollection(c Collection)方法,方法是传入新的ArrayList并将返回的Collection分配给ArrayList。但是,这给了我一个编译器错误: Race.java:41: incompatible types found : java.util.Collection required: java.util.ArrayList finishingOrder = Collections.synchronizedCollection(new ArrayList(numberOfRaceCars)); 以下是相关代码: public class Race implements RaceListener { private Thread[] racers; private ArrayList finishingOrder; //Make an ArrayList to hold RaceCar objects to determine winners finishingOrder = Collections.synchronizedCollection(new ArrayList(numberOfRaceCars)); //Fill array with RaceCar objects for(int i=0; …





8
计数属性与Count()方法?
使用集合,我有两种获取对象计数的方法:Count(属性)和Count()(方法)。有谁知道关键的区别是什么? 我可能是错的,但是我总是Count在任何条件语句中使用该属性,因为我假设该Count()方法对集合执行某种查询,在Count“获取”之前必须已对该集合进行了分配。但这是一个猜测-如果我错了,我不知道性能是否会受到影响。 编辑:出于好奇,Count()如果集合为null ,会抛出异常吗?因为我很确定该Count属性仅返回0。
85 c#  linq  list  collections  count 

4
是否有类似异步BlockingCollection <T>的东西?
我想await基于BlockingCollection&lt;T&gt;.Take()异步的结果,所以我不阻塞线程。寻找这样的事情: var item = await blockingCollection.TakeAsync(); 我知道我可以这样做: var item = await Task.Run(() =&gt; blockingCollection.Take()); 但这有点使整个想法付诸东流,因为(的ThreadPool)另一个线程被阻塞了。 还有其他选择吗?

7
是否有一个保留订单的Set也实现了List?
我试图找到的实现java.util.List,并java.util.Set在Java中的同一时间。我希望此类仅允许唯一元素(如Set)并保留其顺序(如List)。JDK 6中是否存在? 有List&lt;T&gt;#add(int, T)一点很重要,这样我就可以插入特定位置。
84 java  collections 


4
鉴于jdk1.6及更高版本中的HashMaps导致multi = threading问题,我该如何解决我的代码
我最近在stackoverflow中提出了一个问题,然后找到了答案。最初的问题是,除了互斥锁或垃圾回收以外,还有哪些机制可以减慢我的多线程Java程序的速度? 我惊骇地发现HashMap已在JDK1.6和JDK1.7之间进行了修改。现在,它具有一个代码块,该代码块使所有创建HashMap的线程同步。 JDK1.7.0_10中的代码行是 /**A randomizing value associated with this instance that is applied to hash code of keys to make hash collisions harder to find. */ transient final int hashSeed = sun.misc.Hashing.randomHashSeed(this); 最终打电话 protected int next(int bits) { long oldseed, nextseed; AtomicLong seed = this.seed; do { oldseed = seed.get(); …

12
具有多个字段的Collections.sort
我有一个包含三个字段(所有字符串类型)的“报告”对象列表- ReportKey StudentNumber School 我有一个排序代码,就像- Collections.sort(reportList, new Comparator&lt;Report&gt;() { @Override public int compare(final Report record1, final Report record2) { return (record1.getReportKey() + record1.getStudentNumber() + record1.getSchool()) .compareTo(record2.getReportKey() + record2.getStudentNumber() + record2.getSchool()); } }); 由于某种原因,我没有排序顺序。一个建议在字段之间插入空格,但是为什么呢? 您认为代码有什么问题吗?



9
Python单元测试中的assertAlmostEqual用于浮点数的集合
Python的单元测试框架中的assertAlmostEqual(x,y)方法在假设和为浮点数的情况下测试和近似相等。xy 问题assertAlmostEqual()在于它仅适用于浮点数。我正在寻找一种类似的方法assertAlmostEqual(),可用于浮点数列表,浮点数集,浮点数字典,浮点数元组,浮点数元组列表,浮点数列表集等。 例如,我们x = 0.1234567890,y = 0.1234567891。x和y几乎相等,因为他们对每一个除了最后一个数字一致。因此self.assertAlmostEqual(x, y)是True因为assertAlmostEqual()适用于彩车。 我正在寻找一种更通用的方法assertAlmostEquals(),该方法还可以评估对的以下调用True: self.assertAlmostEqual_generic([x, x, x], [y, y, y])。 self.assertAlmostEqual_generic({1: x, 2: x, 3: x}, {1: y, 2: y, 3: y})。 self.assertAlmostEqual_generic([(x,x)], [(y,y)])。 有这种方法还是我必须自己实现? 说明: assertAlmostEquals()有一个名为的可选参数,places并且通过计算四舍五入到十进制数的差来比较数字places。默认情况下places=7,因此self.assertAlmostEqual(0.5, 0.4)为False,而self.assertAlmostEqual(0.12345678, 0.12345679)为True。我的投机assertAlmostEqual_generic()应该具有相同的功能。 如果两个列表具有完全相同的顺序几乎相等的数字,则认为它们几乎相等。正式地,for i in range(n): self.assertAlmostEqual(list1[i], list2[i])。 同样,如果两个集合可以转换为几乎相等的列表(通过为每个集合分配顺序),则认为它们几乎相等。 类似地,如果每个字典的键集几乎等于另一个字典的键集,则两个字典被认为几乎相等,并且对于每个这样的几乎相等的键对,都有一个相应的几乎相等的值。 总的来说:我认为两个集合如果相等就几乎相等,除了一些对应的float彼此几乎相等。换句话说,我真的想比较对象,但是在沿途比较浮点时精度(自定义)较低。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.