Tag: 集合

展平collections

说我有一个Map<? extends Object, List<String>> Map<? extends Object, List<String>> 我可以很容易地获得地图的值,并遍历它来产生一个List<String> 。 for (List<String> list : someMap.values()) { someList.addAll(list); } 有一种方法可以一举把它弄平吗? List<String> someList = SomeMap.values().flatten();

为什么Java可变参数不支持集合?

在我的Java代码中,我经常使用非常方便的method(Class… args)可变参数。 据我所知,它们允许你传递任何数量的Class对象或Class[]的数组。 由于我也经常使用Java集合类,所以我对两者之间缺乏兼容性感到沮丧。 结果,我最终做了collection.toArray() ,但是有一些types安全问题。 所以现在的问题是:为什么Java不允许Iterable<T>实例作为可变参数,只要genericstypes符合可变参数的T…types? 不是每个人都使用列表,集合等吗? 有没有一个简单的,types安全的方式来提供从收集转换为可变参数?

是否有可能在java中做比较器,但实现自定义equals()和hashCode()

我有一个对象的数组,我想连接它与另一个对象的数组,除了具有相同的ID的对象。 该对象在系统中的许多地方使用,没有哈希码或等于实现。 所以我不想实现hashCode()和equals(),因为我害怕在系统中某处使用那些对象,我不知道这些。 所以我想把所有的对象放在一个集合中,但不知何故使该对象使用自定义提供的hashCode()和equals()。 像自定义比较器(),但等于。

如何编写一个导致字典的LINQ查询?

public class Person { public string NickName{ get; set; } public string Name{ get; set; } } var pl = new List<Person>; var q = from p in pl where p.Name.First() == 'A' orderby p.NickName select new KeyValuePair<String, String>(p.NickName, p.Name); var d1 = q.ToList(); // Gives List<KeyValuePair<string, string>> var d2 = q.ToDictionary(); // Does not […]

使用stream将自定义比较器收集到TreeSet中

在Java 8中工作,我有一个像这样定义的TreeSet : private TreeSet<PositionReport> positionReports = new TreeSet<>(Comparator.comparingLong(PositionReport::getTimestamp)); PositionReport是一个相当简单的类,定义如下: public static final class PositionReport implements Cloneable { private final long timestamp; private final Position position; public static PositionReport create(long timestamp, Position position) { return new PositionReport(timestamp, position); } private PositionReport(long timestamp, Position position) { this.timestamp = timestamp; this.position = position; } public long getTimestamp() […]

谷歌的ImmutableList和Collections.unmodifiableList()有什么区别?

来自ImmutableList javadocs: 不像Collections.unmodifiableList(java.util.List),它是一个单独的集合的视图,仍然可以改变,ImmutableList的一个实例包含它自己的私有数据,永远不会改变。 ImmutableList对于公共静态最终列表(“常量列表”)来说很方便,并且还可以让你轻松地为调用者提供给你的类的列表的“防御副本”。 这是否意味着: 如果我有Dimension对象的ImmutableList(例如),那么我不能改变它的任何维对象? 如果我有维度对象的Collections.unmodifiableList(列表),那么我不能只添加或删除任何对象,但我可以改变它们(例如调用setDimension(宽度,高度)方法)?

为什么Python不支持loggingtypes,即可变的namedtuple

为什么Python本身不支持loggingtypes? 这是一个具有可变版本的namedtuple的问题。 我可以使用namedtuple._replace 。 但是我需要把这些logging集合到一个集合中,并且由于namedtuple._replace创build了另一个实例,所以我也需要修改这个集合,这个集合很快就变得凌乱了。 背景:我有一个设备的属性,我需要通过轮询它通过TCP / IP。 即其表示是一个可变的对象。 编辑:我有一套我需要轮询的设备。 编辑:我需要使用PyQt遍历显示其属性的对象。 我知道我可以添加特殊的方法,如__getitem__和__iter__ ,但我想知道是否有更简单的方法。 编辑:我宁愿一个types的属性是固定的(就像他们在我的设备),但是可变的。

Java集合维护插入顺序

为什么一些集合数据结构不能保持插入顺序? 与维持插入顺序相比,所取得的特殊成就是什么? 如果我们不维持秩序,我们会得到什么?

Scala模式匹配列表以外的序列

我有以下代码recursion操作列表中的每个元素 def doMatch(list: List[Int]): Unit = list match { case last :: Nil => println("Final element.") case head :: tail => println("Recursing…"); doMatch(tail) } 现在,忽略这个function可以通过filter()和foreach() ,这工作得很好。 但是,如果我试图改变它接受任何Seq [Int] ,我遇到了问题: Seq没有::,但它确实有+:,据我所知基本上是一样的东西。 如果我试图匹配head +:tail,但是,编译器会抱怨错误:not found:value +:' 无特定于列表,我不知道如何replace它。 如果我经历过前面的问题,我会尝试Seq() 这是我认为代码应该看起来如何,除非它不工作: def doMatch(seq: Seq[Int]): Unit = seq match { case last +: Seq() => println("Final element.") case head +: […]

是否有一个公认的Java相当于Python的zip()?

我有两个List对象,我想将它们配对,就像Python中的zip()函数一样。 我很确定这在JDK中是不可用的,但是在类似于Apache Commons Collections的相当普遍的库中是否有这样的情况呢? 谢谢。