我正在查看 的源代码中的一些内容java.lang.Math,我注意到 while Math.min(int, int)(或其长版本)是这样实现的:
public static int min(int a, int b) {
return a <= b ? a : b;
}
Run Code Online (Sandbox Code Playgroud)
这对我来说完全有意义,这和我要做的一样。但是,双/浮点实现是这样的:
public static float min(float a, float b) {
if (a != a) {
return a;
} else if (a == 0.0F && b == 0.0F && (long)Float.floatToRawIntBits(b) == negativeZeroFloatBits) {
return b;
} else {
return a <= b ? a : b;
}
}
Run Code Online (Sandbox Code Playgroud)
我完全傻眼了。相比a于自己?第二次检查是为了什么?为什么它的实现方式与 int/long 版本不同?
Lately I encountered a method defined similar to this and I don't exactly understand its usage:
public static <T, U extends T> T foo(U u) { ... }
Run Code Online (Sandbox Code Playgroud)
A sample use could be like this:
// Baz is just the containing class of foo()
Number n = Baz.foo(1);
Run Code Online (Sandbox Code Playgroud)
Where T is inferred to Number and U (probably) to Integer. But I can't wrap my head around when this is superior to e.g. this method definition:
public static <T> T …Run Code Online (Sandbox Code Playgroud) Java 流 API 提供了一种通用.reduce(identity, accumulator)方法。
从 javadocs 中可以清楚地看出累加器应该是一个无状态函数。
但是,我有一个关于identity对象的问题,即它应该是线程安全的吗?
假设 anidentity是一个 java 对象,并且 anaccumulator以修改不是原子的方式修改该对象,例如accumulator查看identity's状态,然后决定如何准确地修改它的内部状态。很明显,可能会同时运行多个 reduce 操作。在这种情况下,会出现几个问题:
identity对象范围内是原子的吗?identity对象不可变并在每次减少时返回一个新实例就足够了吗?我已经创建了一个randomIntStream:
final static PrimitiveIterator.OfInt startValue = new Random().ints(0, 60).iterator();
Run Code Online (Sandbox Code Playgroud)
文档说这个流实际上是无穷无尽的.
我想了解背景中发生了什么.
ints(0,60)正在生成无限的整数流.如果这是无限的,为什么我的机器没有泄漏任何内存?
我想知道,实际上生成了多少个数字,以及这个实现是否会在流仍然结束时导致错误?或者这个流会不断地在飞行中充满新的整数,它真的永远不会结束吗?
如果我已经提出这个问题,那么现在生成随机数的最佳做法是什么?
在我的Selenium-Test(有chromedriver-2.24)中,我试图通过基本身份验证访问我的网页,并使用以下语句:
WebDriver driver = ...;
driver.get("http://admin:admin@localhost:8080/project/");
Run Code Online (Sandbox Code Playgroud)
但谷歌Chrome在控制台中给出了以下警告:
[弃用]其URL包含嵌入凭据(例如
https://user:pass@host/)的子资源请求被阻止.有关详细信息,请参阅https://www.chromestatus.com/feature/5669008342777856.
在标记的链接中提到支持被删除:
在子资源请求中删除对嵌入式凭据的支持.(已删除)
我现在的问题是,还有另一种从Selenium进行基本身份验证的方法吗?
java selenium google-chrome basic-authentication selenium-webdriver
出于某种原因,我无法解决如何使用流将这个深层嵌套列表转换为新列表的问题.
every A in List<A> contains ->
List<B> where every B contains ->
List<C> where every C contains -> List<String>
Run Code Online (Sandbox Code Playgroud)
我尝试了许多不同的迭代,如:
List<String> newlist = listA.getB()
.stream()
.filter(b -> b.getC()
.stream()
.filter(c -> c.getPeople)
.collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)
我充满了困惑......我可以通过for循环轻松完成这项工作,但我听说流简单易用,我想开始更多地使用它们.
我尝试使用的containsKey方法TreeMap,但是以某种方式我遇到了问题。
存储在树形图中的对象的定义与equals()不会产生相同的结果compareTo()。这是有意的。
但是,的文档java.util.Map说:
如果此映射包含指定键的映射,则返回true。更正式地说,当且仅当此映射包含键k的映射(例如)时,才返回true
(key==null ? k==null : key.equals(k))。(最多可以有一个这样的映射。)
因此,我尝试了以下操作:
c = someModifiedObject();
boolean t1 = sm.containsKey(c);
someObject c2 = new someObject();
boolean t2 = sm.containsKey(c2);
boolean t3 = c.equals(new Chain());
int t4 = c.compareTo(new Chain());
Run Code Online (Sandbox Code Playgroud)
t1为true,因为对象位于树形图中。t3为true,因为t1等于t3(对于更改equals()运算符而言)t4为false,但是,t2也为false。似乎TreeMap使用compareTo()而不是equals()确定对象是否存在。
是否有排序映射的另一种实现,可以equals()用来检查对象是否存在?
我有 JSON 文件:
{
"id":1,
"name":"abc",
"addressDetails":
{
"City":"NewYork"
}
}
Run Code Online (Sandbox Code Playgroud)
我想向节点“addressDetails”添加一个键值(“pinCode”:“414141”)。
我尝试使用:
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(new File("D://test.json"));
ObjectNode node = mapper.createObjectNode();
node.with("addressDetails").put("pinCode", "414141");
Run Code Online (Sandbox Code Playgroud)
但它没有被添加,有什么办法可以做到这一点吗?
我正在尝试将对象列表转换为一组对象,以确保集合中不存在重复项。我正在尝试使用 Streams。
我有一个类产品如下:
class Product{
int id;
String name;
float price;
public Product(int id, String name, float price) {
this.id = id;
this.name = name;
this.price = price;
}
public String getName()
{
return this.name;
}
public int getId()
{
return this.id;
}
public float getPrice()
{
return this.price;
}
public void setName(String name)
{
this.name = name;
}
public void setId(int id)
{
this.id = id;
}
public void getPrice(float price)
{
this.price = price;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试类似的东西:
List<Product> …Run Code Online (Sandbox Code Playgroud) 可以说我有大量的网络服务器日志文件,不适合内存.我需要将此文件传输到mapreduce方法并保存到数据库.我这样做是使用Java 8 stream api.例如,我在mapreduce进程之后得到一个列表,例如,客户端消费,ip消费,内容消费.但是,我的需求并不像我的例子中那样.由于我不能共享代码,我只想给出基本的例子.
通过Java 8 Stream Api,我想要一次读取文件,同时获取3个列表,而我是流式文件,并行或顺序.但并行会很好.有没有办法做到这一点?