小编dot*_*vav的帖子

将切片的所有项目添加到通道中

在 Go 中,是否有比以下更惯用的方法将数组/切片的所有元素添加到通道中?

ch := make(chan string)
values := []string{"lol", "cat", "lolcat"}

go func() {
    for _, v := range values {
        ch <- v
    }
}()
Run Code Online (Sandbox Code Playgroud)

我正在寻找类似ch <- values...但被编译器拒绝的东西。

channel go slice

7
推荐指数
1
解决办法
1081
查看次数

有效的anagrams代码 - 32个案例中的一个案例失败.通过31例

我尝试为字谜编写一个小代码,然后我写下了onw.

String s = "anagram";
String t = "nagara";

Map<Character,Integer> map1 = new HashMap<Character,Integer>();
Map<Character,Integer> map2 = new HashMap<Character,Integer>();

if (s.length() != t.length()) {
    System.out.println("Not an anagram");
} else {
    for (int i= 0;i<s.length();i++) {
        char c = s.charAt(i);
        char d = t.charAt(i);
        if (map1.containsKey(c)) {
            map1.put(c, map1.get(c)+1);
        } else {
            map1.put(c,1);
        }

        if (map2.containsKey(d)) {
            map2.put(d, map2.get(d)+1);
        } else {
            map2.put(d,1);
        }
    }

    for (Map.Entry<Character, Integer> entry : map1.entrySet()) {
        if (!map2.containsKey(entry.getKey())) {
            System.out.println("Not an anagram");
        } else if …
Run Code Online (Sandbox Code Playgroud)

java string anagram

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

在施工期间访问基类字段

我有以下课程:

public class Base{

    private String str;

    public Base(String str){
       this.str = str;
    }

    public String getStr(){
        return str;
    }    
}

public class Derived extends Base{

    public Derived(){

        super("String");
        System.out.prinln(getStr()); //Is it reliable?

    }

}
Run Code Online (Sandbox Code Playgroud)

在构造派生类期间获取对基类intance的访问是否可靠?

java class

2
推荐指数
1
解决办法
52
查看次数

什么是使Java8流生成格式化字符串的高效方法

上下文:给定一个目录,我想在列表中列出其名称中包含模式的所有文件,按lastModified时间戳排序,并将此列表格式化为Json字符串,我将获取每个文件的名称和时间戳:

[{"name": "somefile.txt", "timestamp": 123456},
{"name": "otherfile.txt", "timestamp": 456789}]
Run Code Online (Sandbox Code Playgroud)

我有以下代码:

private StringBuilder jsonFileTimestamp(File file) {
    return new StringBuilder("{\"name\":\"")
            .append(file.getName())
            .append("\", \"timestamp\":")
            .append(file.lastModified())
            .append("}");
}

public String getJsonString(String path, String pattern, int skip, int limit) throws IOException {

    return Files.list(Paths.get(path))
            .map(Path::toFile)
            .filter(file -> {
                return file.getName().contains(pattern);
            })
            .sorted((f1, f2) -> {
                return Long.compare(f2.lastModified(), f1.lastModified());
            })
            .skip(skip)
            .limit(limit)
            .map(f -> jsonFileTimestamp(f))
            .collect(Collectors.joining(",", "[", "]"));
}
Run Code Online (Sandbox Code Playgroud)

这很好用.我只关心StringBuilder实例化(或字符串连接)的性能.只要文件数量很少就可以了(这是我的情况,所以我很好),但我很好奇:你会建议什么作为优化?我觉得我应该使用reduce正确的累加器和组合器,但我不能让我的大脑围绕它.

谢谢.


UPDATE

我终于进行了以下"优化":

private StringBuilder jsonFileTimestampRefactored(StringBuilder res, File file) {
    return res.append(res.length() …
Run Code Online (Sandbox Code Playgroud)

java optimization string-formatting java-8 java-stream

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

创建Arraylist数组时出现异常

我有这样的java程序

public class Distribution {

    private LinkedList<Integer > group[];    

    public Distribution() {
        group[0] = new LinkedList<>();
        group[0].add(1);
        group[0].add(2);
        group[0].add(3);

        group[1] = new LinkedList<>();
        group[1].add(4);
        group[1].add(5);
        group[1].add(6);
    }

    public static void main(String args[])
    {
        Distribution distribution = new Distribution();
    }
}
Run Code Online (Sandbox Code Playgroud)

但编译器在线程"main"java.lang.NullPointerException中表示Exception.

java

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