在Java中,是否有一个对象用作存储和访问键/值对的Map,但是可以返回一个有序的键列表和一个有序的值列表,这样键和值列表的顺序相同?
因此,作为代码解释,我正在寻找像我的虚构OrderedMap一样的东西:
OrderedMap<Integer, String> om = new OrderedMap<>();
om.put(0, "Zero");
om.put(7, "Seven");
String o = om.get(7); // o is "Seven"
List<Integer> keys = om.getKeys();
List<String> values = om.getValues();
for(int i = 0; i < keys.size(); i++)
{
Integer key = keys.get(i);
String value = values.get(i);
Assert(om.get(key) == value);
}
Run Code Online (Sandbox Code Playgroud) 为什么不Set
提供一个操作来获得一个等于另一个元素的元素?
Set<Foo> set = ...;
...
Foo foo = new Foo(1, 2, 3);
Foo bar = set.get(foo); // get the Foo element from the Set that equals foo
Run Code Online (Sandbox Code Playgroud)
我可以问一下是否Set
包含一个等于的元素bar
,为什么我不能得到那个元素?:(
为了澄清,该equals
方法被覆盖,但它只检查其中一个字段,而不是所有字段.因此,两个Foo
被认为相等的对象实际上可以具有不同的值,这就是我不能使用的原因foo
.
是否有一个实用方法可以在一行中执行此操作?我无法在任何地方找到它Collections
,或者List
.
public List<String> stringToOneElementList(String s) {
List<String> list = new ArrayList<String>();
list.add(s);
return list;
}
Run Code Online (Sandbox Code Playgroud)
除非我打算在上面放上花哨的轮辋,否则我不想重新发明轮子.
嗯......类型可以T
,而不是String
.但你明白了.(所有空检查,安全检查......等)
有没有办法defaultdict(defaultdict(int))
让以下代码工作?
for x in stuff:
d[x.a][x.b] += x.c_int
Run Code Online (Sandbox Code Playgroud)
d
需要根据x.a
和x.b
元素进行临时构建.
我可以用:
for x in stuff:
d[x.a,x.b] += x.c_int
Run Code Online (Sandbox Code Playgroud)
但后来我无法使用:
d.keys()
d[x.a].keys()
Run Code Online (Sandbox Code Playgroud) 我在很多例子中看到有时使用Seq,而其他时候是List ......
除了前一个是Scala类型和List来自Java之外,有什么区别吗?
使用列表,您可以:
list.AddRange(otherCollection);
Run Code Online (Sandbox Code Playgroud)
HashSet中没有添加范围方法.将另一个集合添加到HashSet的最佳方法是什么?
我使用TreeBidiMap
来自Apache的集合库.我想对这些值进行排序doubles
.
我的方法是Collection
使用以下方法检索一个值:
Collection coll = themap.values();
Run Code Online (Sandbox Code Playgroud)
这自然很好.
主要问题:我现在想知道如何转换/转换(不确定哪个是正确的)coll
到一个List
可以排序?
然后我打算遍历排序的List
对象,该对象应按顺序从TreeBidiMap
(themap
)中使用themap.getKey(iterator.next())
迭代器将在列表上的位置获取相应的键doubles
.
据我所知.stream()
,我可以使用链操作.filter()
或使用并行流.但是如果我需要执行小操作(例如,打印列表的元素),它们之间的区别是什么?
collection.stream().forEach(System.out::println);
collection.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud) 我想弄清楚何时以及为什么要使用Dictionary或HashTable.我在这里做了一些搜索,发现有人在谈论字典的一般优点,我完全赞同,这导致拳击和拆箱优势,以获得轻微的性能提升.
但是我也读过字典并不总是按照它们插入的顺序返回对象,它被排序的东西.作为HashTable的地方.据我了解,这导致HashTable在某些情况下更快.
我的问题是,这些情况可能是什么?我上面的假设我错了吗?你可以用什么情况来选择一个在另一个之上,(是的,最后一个有点含糊不清).
我想创建一个类似于新项目Util.Map.Entry
将包含结构key
,value
.
问题是我无法实例化a,Map.Entry
因为它是一个接口.
有谁知道如何为Map.Entry创建新的通用键/值对象?