小编Pat*_*ick的帖子

Java 8流:替换流集合中的单个项目

我在使用Java 8时有些新手,并且正在重构一些旧的代码(对于流操作来说似乎是一个很好的用例).较旧的代码"有效",但在我看来它看起来效率很低.

我的问题的简短版本是我试图找到List的单个元素并用相同元素的更新版本替换它(键是相同的,但每次调用代码时属性都有不同的值) .

     try
     {
        List<Object> items = lookup(itemCache.getKey());
        for (int i = 0; i < items.size(); i++)
        {
           Object originalObject = items.get(i);
           if (originalObject.getPropValue() == newObject.getPropValue())
           {
              List<Object> newItems = new ArrayList<>(items);
              newItems.set(i, newObject);
              putIntoCache(newObject.getKey(), newItems);
              break;
           }
        }
     } 

     catch (Exception ex) { /*exception handling*/ }
Run Code Online (Sandbox Code Playgroud)

基于我到目前为止所读到的关于流的内容,似乎我需要使用.map()或者 .filter()隔离我想要识别的元素,但这似乎也就像在流语句中的任何一个filter或之后发生的操作一样map完整列表或列表中每个项目都受到影响.map().

这似乎很简单,但我正在努力绕过它.因为初始查找List本身,我认为流可以取代所有这些.该ArrayList<>()原代码出现,但项目的顺序并不重要,只要我能够通过它的键替换项目.

如果您选择帮助,谢谢.

java java-stream

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

golang从文件填充结构字段

我对 golang 开发还很陌生,所以如果这是一个基本问题,我很抱歉。我没有看到已经提出过类似的问题;如果有的话,请指点我(谢谢)。

完整的代码(在我问这个问题时,因为它不是不可变的)位于http://play.golang.org/p/idDp1E-vZo

Node.ipaddr我已经声明了一个具有四个原始字段的结构,并且我正在从本地文件系统上的文件中读取指定的值(我fileName在运行时获取作为标志的值;该代码在此处被删除,但在上面提供的链接。)

type Node struct {
    hostname string
    ipaddr   string
    pstatus  string
    ppid     int
}

file, err := os.Open(fileName)
if err != nil {
    panic(fmt.Sprintf("error opening %s: %v", fileName, err))
}
Run Code Online (Sandbox Code Playgroud)

因为文件是行分隔的,所以我认为 abufio.Scanner是从文件中读取数据的理想选择。我正在努力寻找一种优雅的方法来将数据实际传递到结构元素中。

我创建了一个元素数组Node,并考虑了 a map,但我不确定如何实际使用它(还)。

var nodes []*Node
var nodemap = make(map[string]*Node) //do I even need this?

scanner := bufio.NewScanner(file)
for scanner.Scan() {
    if err := scanner.Err(); err != nil {
        fmt.Fprintln(os.Stderr, "error reading from file:", err) …
Run Code Online (Sandbox Code Playgroud)

go

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

启动时容器不支持Docker CLI env var值覆盖

我正在使用以下Dockerfile来构建图像.图像编译得很好.

FROM java:8u40-jdk

ENV CATALINA_HOME="/usr/local/tomcat" 
ENV PATH=$CATALINA_HOME/bin:$PATH
RUN mkdir -p "$CATALINA_HOME"

WORKDIR $CATALINA_HOME

ENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.0.20
ENV TOMCAT_DL_URL http://archive.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz
ENV TOMCAT_ENV local
RUN set -x \
    && curl -fSL "$TOMCAT_DL_URL" -o tomcat.tar.gz \
    && tar -xvf tomcat.tar.gz --strip-components=1 \
    && rm bin/*.bat \
    && rm tomcat.tar.gz

### remove the closing tag, then use the echo|tee pattern to build it back in
RUN sed -i 's|</tomcat-users>| |' $CATALINA_HOME/conf/tomcat-users.xml
RUN echo "<role rolename=\"admin\" />" | tee -a $CATALINA_HOME/conf/tomcat-users.xml \ …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

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

标签 统计

docker ×1

dockerfile ×1

go ×1

java ×1

java-stream ×1