小编MCh*_*ker的帖子

如何使用Stream API java 8一起打印两个列表?

我有两个列表如下

List<String> names = Arrays.asList("James","John","Fred");
List<Integer> ages = Arrays.asList(25,35,15);
Run Code Online (Sandbox Code Playgroud)

我想要做的就是打印这两个列表

James:25
John:35
Fred:15
Run Code Online (Sandbox Code Playgroud)

使用经典方式很容易做到

for(int i=0;i<names.size();i++){
    System.out.println(names.get(i)+":"+ages.get(i));
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用Stream API java 8?

我能做的是只打印一个列表

names.stream().forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

12
推荐指数
2
解决办法
7121
查看次数

如何使用Java 8循环和打印2D数组

考虑这个二维数组

String[][] names = { {"Sam", "Smith"},
                     {"Robert", "Delgro"},
                     {"James", "Gosling"},
                   };
Run Code Online (Sandbox Code Playgroud)

使用经典方法,如果我们想要访问二维数组的每个元素,那么我们需要使用两个for循环遍历二维数组.

for (String[] a : names) {
    for (String s : a) {
        System.out.println(s);
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有一种新的优雅方式来使用Java 8功能循环和打印2D数组(Lambdas,方法参考,Streams,...)?

到目前为止我尝试过的是:

Arrays.asList(names).stream().forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

输出:

[Ljava.lang.String;@6ce253f1
[Ljava.lang.String;@53d8d10a
[Ljava.lang.String;@e9e54c2
Run Code Online (Sandbox Code Playgroud)

java multidimensional-array java-8

10
推荐指数
3
解决办法
1万
查看次数

如何使用java 8 Stream API将特定对象移动到列表的开头?

考虑这个String列表

List<String> list = Arrays.asList("c", "k", "f", "e", "k", "d");
Run Code Online (Sandbox Code Playgroud)

我想要做的是将所有k字符串移动到开头,list并将其余字符串保持在相同的顺序.

到目前为止我尝试了什么(它正在工作,但我认为它是如此丑陋)

list = Stream.concat(list.stream().filter(s -> s.equals("k")),
        list.stream().filter(s -> !s.equals("k"))).collect(
        Collectors.toCollection(ArrayList::new));

list.stream().forEach(System.out::print);
Run Code Online (Sandbox Code Playgroud)

输出:

kkcfed
Run Code Online (Sandbox Code Playgroud)

我问是否有另一个我不知道的Stream功能可以帮助我更有效地解决问题.

java java-stream

6
推荐指数
1
解决办法
1825
查看次数

如何将json从android发送到php?

要将json从android发布到php,我使用了Volley库StringRequest对象.

StringRequest sr = new StringRequest(Request.Method.POST,url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                // some code
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //some code
            }
        }){
            @Override
            protected Map<String,String> getParams(){
                Map<String, String> params = new HashMap<String, String>();
                ArrayList<Command> commands = MyApplication.readFromPreferences(getActivity(), Constants.COMMAND);
                String jsonCommands = new Gson().toJson(commands);
                params.put("commands", jsonCommands);
                return params;
            }
        };
Run Code Online (Sandbox Code Playgroud)

为了捕获php中的数据并验证它是否被正确发送,我使用了这个

echo $_POST["commands"]; 
Run Code Online (Sandbox Code Playgroud)

输出:

[{\"product\":{\"category_id\":1,\"created_at\":\"2015-06-13 17:49:58\",\"description\":\"CF77 COIN FINDER\",\"url_image\":\"IMG_76ECDC-707E7E-70AC81-0A1248-4675F3-F0F783.jpg\",\"name\":\"CF77 COIN FINDER\",\"pid\":12,\"price\":500.0},\"product_quantity\":3},{\"product\":{\"category_id\":1,\"created_at\":\"2015-06-13 17:49:58\",\"description\":\"JEOSONAR 3D DUAL SYSTEM\",\"url_image\":\"IMG_2D9DF0-2EB7E9-ED26C0-2C833B-B6A5C5-5C7C02.jpg\",\"name\":\"JEOSONAR 3D DUAL SYSTEM\",\"pid\":15,\"price\":500.0},\"product_quantity\":1},{\"product\":{\"category_id\":1,\"created_at\":\"2015-06-13 17:49:58\",\"description\":\"MAKRO …
Run Code Online (Sandbox Code Playgroud)

php java android json android-volley

5
推荐指数
1
解决办法
2016
查看次数

收集器groupingBy java 8

考虑这两个类

主题类:

class Subject{
    long id;
    String category;
    String description;
    public Subject(long id,String category,String description){
        this.id=id;
        this.category=category;
        this.description=description;
    }
    // getters, setters, toString,...    
}
Run Code Online (Sandbox Code Playgroud)

观察者类:

class Observer{
    long id;
    Subject subject;
    public Observer(long id,Subject subject){
        this.id=id;
        this.subject=subject;
    }
    // getters, setters, toString,...
}
Run Code Online (Sandbox Code Playgroud)

并考虑这个观察员名单

Subject s1 = new Subject(1, "sport", "subject 1");
Subject s2 = new Subject(2, "music", "subject 2");
Subject s3 = new Subject(3, "sport", "subject 3");

List<Observer> observers = Arrays.asList(new Observer(1, s1),
        new Observer(2, s1), new Observer(3, s2), …
Run Code Online (Sandbox Code Playgroud)

java grouping java-8 collectors

4
推荐指数
1
解决办法
1902
查看次数

如何使用AngularJS创建5个评级星,第三个星被禁用

我想在用户评价业务时添加约束.用户不应该投票3,因为它是系统给我们数据库的任何新增业务的默认费率.

我使用AngularJS作为前端Javascript库并创建评级栏,我正在使用ui.bootstrap.rating模块.

我想做的是这样的事情(用户点击第四颗星的情况) 在此输入图像描述

我试过的是这个

Html代码

<uib-rating ng-model="rateNumber1" max="2"
            state-on="'fullStar'" state-off="'emptyStar'"
            aria-labelledby="custom-icons-1"
            read-only="false">
</uib-rating>
<uib-rating ng-model="rateNumber2" max="1"
            state-on="'thirdStar'" state-off="'emptyStar'"
            on-hover="onHoverRatingNumber2()" on-leave="onLeaveRatingNumber2()"
            aria-labelledby="custom-icons-1"
            read-only="false">
</uib-rating>
<uib-rating ng-model="rateNumber3" max="2"
            state-on="'fullStar'" state-off="'emptyStar'"
            on-hover="onHoverRatingNumber3()" on-leave="onLeaveRatingNumber3()"
            aria-labelledby="custom-icons-1"
            read-only="false">
</uib-rating>
Run Code Online (Sandbox Code Playgroud)

为此目的在控制器中创建的Javascript函数

/* rating a business */
$scope.rateNumber1 = 0;
$scope.rateNumber2 = 0;
$scope.rateNumber3 = 0;
$scope.onHoverRatingNumber3 = function () {
  $scope.rateNumber1 = 2;
  $scope.rateNumber2 = 1;
};
$scope.onLeaveRatingNumber3 = function () {
  $scope.rateNumber1 = 0;
  $scope.rateNumber2 = 0;
};
$scope.onHoverRatingNumber2 = function () …
Run Code Online (Sandbox Code Playgroud)

html javascript css angularjs angular-ui-bootstrap

4
推荐指数
1
解决办法
1031
查看次数

Java thread.sleep(1)睡眠时间超过1毫秒

我正在尝试使用Java开发2D游戏.到目前为止,我已设法将游戏设置为使用全屏独占模式并在自定义线程中进行主动渲染.我决定使用的游戏循环是固定时间步变量渲染类型.这种类型的游戏循环应该尽可能快地渲染,因为设备可以处理,我并不完全满意.所以我试图限制帧速率Thread.sleep().

如果我关闭所有渲染,只需在游戏循环中更新游戏,就可以Thread.sleep(1)成功地进行游戏1 ms.不过,如果我打开渲染,有时候Thread.sleep(1)睡觉的方式长于1 ms一样15 ms.我通过添加/删除线来打开/关闭渲染:

BufferedImage drawImage = render(Math.min(1d, lag / TIME_PER_UPDATE));
drawToScreen(drawImage);
Run Code Online (Sandbox Code Playgroud)

导致线程长时间睡眠的原因是什么?

这是我第一次在这些论坛上发帖,所以请告诉我,如果我在帖子中做错了什么,或者这是否重复(我没有找到类似的帖子).

import java.awt.Color;
import java.awt.DisplayMode;
import java.awt.Frame;
import java.awt.Graphics2D;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.RenderingHints;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;

public class Main implements KeyListener
{

    private static final long serialVersionUID = 1L;
    private boolean gameRunning = false;
    private final double UPDATE_RATE = 60;
    private final double TIME_PER_UPDATE = 1000000000 / …
Run Code Online (Sandbox Code Playgroud)

java multithreading

3
推荐指数
1
解决办法
2016
查看次数

如何让android支持FloatingActionButton在屏幕的右下角?

我已经FloatingActionButton在我的布局中添加了一个RelativeLayout如下所示

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_margin="16dp"
        android:clickable="true"
        android:src="@drawable/ic_ok" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

如你所见,我已经设定layout_gravity,bottom|right但我的地方FloatingActionButton没有改变,它位于左上角.

我怎样才能让我FloatingActionButton在右下角?

xml android

3
推荐指数
2
解决办法
3887
查看次数

如何在 JavaScript 中高效地分发逻辑表达式

假设你有这个逻辑表达式

(A or B or C) and (D or E) and (F or G or H)
Run Code Online (Sandbox Code Playgroud)

正如您在这里看到的,我们在括号内有 OR 运算符,在括号外有 AND 运算符。我们可以说这个逻辑表达式是 AND(OR) 类型。

我想将这个表达式转换为 OR(AND)。

例子:

(A or B) and (C or D) = (A and C) or (A and D) or (B and C) or (B and D)
Run Code Online (Sandbox Code Playgroud)

实现这一点的简单方法(在 JavaScript 中):

class OrNode<C = string> {
    /* constructor logic */
    nodeType = 'OR';
    children: C[];
}

class AndNode<C = string> {
    /* constructor logic */
    nodeType = 'AND';
    children: …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm logical-operators

3
推荐指数
1
解决办法
122
查看次数