DoubleStream ds = DoubleStream.of(1.0, 2.0, 3.0);
DoubleFunction<DoubleUnaryOperator> fun = a -> d -> d + a;
System.out.print(ds.map(fun.apply(1.0)).sum());
Run Code Online (Sandbox Code Playgroud)
在学习lambda的过程中,我了解了类似d -> d+a或什至这样的东西,
(d, a) -> d+a
但是尽管知道函数的作用,但我无法弄清楚上述lambda的语法。
有人可以解释一下或给某个教程一个链接吗?
谢谢。
我想查看我的Set中是否有任何值用作Map中的键。
我可以做:
Set<String> foo;
for (String val: foo) {
if (map.containsKey(val)) {
contains = true;
break
}
}
Run Code Online (Sandbox Code Playgroud)
有什么凉吗?
在Java 8中,如何从列表转换为映射的形式empID来自类内部和作为对象本身的值。
List<CompanyEntity> result =
ifEntityManager.createNamedQuery("findByEmployeeId", CompanyEntity.class)
.getResultList();
Map<String, CompanyEntity> result1 = result.stream()
.collect(Collectors.toMap(CompanyEntity::getEmployeeId, CompanyEntity::this)); ??
Run Code Online (Sandbox Code Playgroud)
我想要第二个参数toMap作为对象本身。有人可以建议如何实现相同目标吗?
我尝试这样做,Collectors.toMap(CompanyEntity::getEmployeeId, this)但无法摆脱编译错误。
我有一些使用Arrays.stream(int arr [])。sum()添加的整数。它以int返回截断后的总和,而实际总和更大且适合long。为什么流API会通过截断而只返回int而不返回长整数?
尝试使用小整数,例如int myArray [] = {1,5,8}; int sum = Arrays.stream(myArray).sum();
工作正常。
但不适用于其和导致long的更长整数。
下面的情况1可以正常工作并返回14
int myArray[] = { 1, 5, 8 };
int sum = Arrays.stream(myArray).sum();
Run Code Online (Sandbox Code Playgroud)
而方案2无法使用,因为总和超过32位。它给出的总和为-105032716,而预期值为4189934580
int myArray[] = { 2094967290, 2094967290};
int sum = Arrays.stream(myArray).sum();
Run Code Online (Sandbox Code Playgroud)
并获得正确的总和,如果我在下面进行操作,则会得到预期的结果4189934580
long sum = 0L + 2094967290+2094967290;
System.out.println(sum);
Run Code Online (Sandbox Code Playgroud) 我尝试使用 java 11HttpRequest使用 PATCH 方法调用 msgraph webservice:
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import groovy.json.JsonSlurper;
import groovy.json.JsonOutput;
access_token = "my_token";
def url = 'https://graph.microsoft.com/v1.0/groups/group_id/drive/items/01P4AIIJ5QTIIAZ2FLEZBIZWRV6KEBIMM5/workbook/worksheets/%7B00000000-0001-0000-0000-000000000000%7D/range(address=\'A1\')'
HttpClient httpClient = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_2)
.build();
jsonPayloadString = '{"values":["blabla"]}';
jsonPayload = HttpRequest.BodyPublishers.ofString(jsonPayloadString.toString())
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.PATCH(jsonPayload)
.header("Content-Type", "application/json")
.build();
HttpResponse response = httpClient.send(request,HttpResponse.BodyHandlers.ofString());
Run Code Online (Sandbox Code Playgroud)
错误 :
没有方法签名:jdk.internal.net.http.HttpRequestBuilderImpl.PATCH() 适用于参数类型:(jdk.internal.net.http.RequestPublishers$StringPublisher) 值:[jdk.internal.net.http.RequestPublishers$ StringPublisher@280a600b]
通话本身效果很好,例如在 Postman 中。但我不能让它在 groovy/java 中工作。
我以前使用过,HttpUrlConnection但它不支持 PATCH。实际上可以使用HttpRequest吗?
我在网上找不到任何使用 PATCH 方法的工作示例。
我想.txt使用 Java Stream在文件中查找字谜。这是我所拥有的:
try (InputStream is = new URL("http://wiki.puzzlers.org/pub/wordlists/unixdict.txt").openConnection().getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
Stream<String> stream = reader.lines()) {
Run Code Online (Sandbox Code Playgroud)
以及字谜的方法:
public boolean isAnagram(String firstWord, String secondWord) {
char[] word1 = firstWord.replaceAll("[\\s]", "").toCharArray();
char[] word2 = secondWord.replaceAll("[\\s]", "").toCharArray();
Arrays.sort(word1);
Arrays.sort(word2);
return Arrays.equals(word1, word2);
}
Run Code Online (Sandbox Code Playgroud)
如何使用 Java 8 Stream 检查 unixdict.txt 中的单词是否是字谜?有没有办法将一个词与流中的所有词进行比较?
我试图理解 Java 中流的数据流。我的任务是将每个字母出现在字符串列表中
List<String> words = Arrays.asList("Welcome", "to", "the", "java", "world");
Run Code Online (Sandbox Code Playgroud)
进入
Map<String, Long>
Run Code Online (Sandbox Code Playgroud)
使用单线流。
我知道,首先我们可以从列表中流式传输每个单词,然后我需要将它分成多个字符,然后将每个字符作为键并将其出现作为值进行计数,最后返回整个映射。
理解起来太复杂了。有人可以向我解释怎么做吗?
我有一个具有这种结构的 Firebase 数据库
{
"foo" : {
"data" : {
"2019-12-01" : [ {
"item1" : 8,
"item2" : 16,
"name" : "user1"
}, {
"item1" : 9,
"item2" : 18,
"name" : "user2"
} ],
"2019-12-02" : [ {
"item1" : 2,
"item2" : 26,
"name" : "user1"
}, {
"item1" : 6,
"item2" : 6,
"name" : "user2"
} ]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在recyclerviewer以一种非常简单的方式填写主要活动:
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习 Java 8。有没有办法将下面的方法转换为 Java 8 Streams、filter 和 forEach。如果是这样,如何?
String[] couponList = coupons.split(",");
for(String coupon:couponList) {
singleCouponUsageCount = getSingleCouponUsageCount(coupon);
if(singleCouponUsageCount >= totalUsageCount)
return 0;
}
return 1;
//
for(String coupon:couponList) {
singleCouponUsageCount = getSingleCouponUsageCount(coupon);
if(singleCouponUsageCount >= totalUsageCount)
return singleCouponUsageCount;
}
return singleCouponUsageCount;
Run Code Online (Sandbox Code Playgroud) 我有一个 Map 类型的数组列表。我想从列表中过滤掉空值并找到最大值和最小值。除了空值外,该程序运行良好。
ArrayList<Map<String, Float>> elements = new ArrayList<Map<String, Float>>();
Map<String, Float> element = new HashMap<String, Float>();
element.put("a", (float) 1.22);
element.put("b", (float) 1.33);
element.put("c", (float) 1.52);
element.put("d", (float) 1.452);
element.put("e", (float) 1.452);
Map<String, Float> element2 = new HashMap<String, Float>();
element2.put("a", (float) 1.2332);
element2.put("b", (float) 1.242);
element2.put("c", (float) 1.552);
element2.put("d", (float) 15.33);
element2.put("e",null);
elements.add(element);
elements.add(element1);
elements.add(element2);
System.out.println("Initial Mappings are: " + elements);
Map<String, Float> min = elements.stream()
.flatMap(m -> m.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, Math::min));
System.out.println(min);
Run Code Online (Sandbox Code Playgroud) java ×10
java-stream ×6
java-8 ×4
lambda ×2
anagram ×1
android ×1
arraylist ×1
collectors ×1
dictionary ×1
filter ×1
groovy ×1
hashmap ×1
httprequest ×1
inputstream ×1
java-11 ×1