我正在尝试加载超过2 ^ 32个元素的数据集,并将这些元素放在ArrayList中anArrayList.此数据按时间顺序排列,因此我使用ArrayList存储数据以保持顺序.同时,我想快速访问String中的元素elementID.现在我使用HashMap将a映射elementID到元素Object中anArrayList.我使用整数currentAddingAt来跟踪anArrayList上的索引以添加元素.这是相关的代码:
ArrayList<ElementX> anArrayList;
int currentAddingAt;
HashMap<String, ElementX> elementToObjHashMap;
... ...
public void addAnElement(ElementX e){
anArrayList.add(currentAddingAt, e);
elementToObjHashMap.put(e.getElementID, ArrayList.get(currentAddingAt));
}
Run Code Online (Sandbox Code Playgroud)
当我改变的类型的问题来了currentAddingAt,从int到long.因为ArrayList的get(int index)方法仅int作为参数,根据Oracle的文档(http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html).这也让我想知道:
ArrayList的容量可以大于Java中的最大int数(2 ^ 32)吗?
除了在这种情况下使用ArrayList和HashMap之外还有哪些选项(保持大数据集的顺序并且仍然能够从键快速映射到对象)?除了普通的Java之外,我还需要一些库(甚至是某些框架)吗?
我正在尝试连接 Pandas DataFrame 中的两列。问题是当任一系列中都存在 None 值时,结果为 NaN。由于真实数据非常大,有保留原始None值供以后参考的价值,希望不要更改列中的原始值。有没有办法在熊猫中实现这一目标?
创建一个示例数据帧:
import pandas as pd
f = pd.DataFrame([['a', 'b','c','a', 'b','c'],['1', '2','3', '4', '5','6', ]])
f = f.transpose()
f.columns = ['xx', 'yy']
f.xx[0] = None
f.yy[0] = None
f.xx[2] = None
f.yy[3] = None
xx yy
0 None None
1 b 2
2 None 3
3 a None
4 b 5
5 c 6
Run Code Online (Sandbox Code Playgroud)
我试过f['new_str'] = f.xx + f.yy和f['new_str'] = f['xx'] + f['yy']。如果任何值是 None 类型,则两者都将连接值设置为 NaN。我认为这是由于熊猫如何处理None类型。None 类型和 str …
我正在尝试在 bash 中进行字符串替换,想更好地理解它。
我设计了一个这样的成功案例:
a=abc_de_f
var=$a
echo ${var//_/-}
Run Code Online (Sandbox Code Playgroud)
输出是abc-de-f. 这有效。
但是,以下脚本失败:
a=abc_de_f
echo ${$a//_/-}
Run Code Online (Sandbox Code Playgroud)
错误消息是${$a//_/-}: bad substitution。这似乎与我们如何使用变量进行替换有关。为什么这会失败?在这种情况下 bash 如何处理变量?
另外,在 bash 字符串替换中处理转义字符的最佳实践是什么?
python ×2
arraylist ×1
bash ×1
bigdata ×1
biginteger ×1
dataframe ×1
interpreter ×1
java ×1
large-data ×1
linux ×1
pandas ×1
performance ×1
shell ×1
unix ×1