java - Java中对象的处理列表

标签 java

我有一个对象列表,我想根据条件处理对象的子集,然后创建一个包含已处理对象的新列表。

对象列表

miss | shannon sperling
mr | john smith
prof | kim taylor
prof.dr | kim taylor

在上面的列表中,我想要有两个标题的名字(kim taylor)并粘贴标题,因为 profprof.dr 的子集. 我的最终列表应如下所示

miss | shannon sperling
mr | john smith
prof.dr | kim taylor  

我尝试了以下代码

void gluetitles(List title)
       {
           for (int i=0;i<title.size();i++) { 
                String names = (String) title.get(i);
                String[] titlename=names.split("\\|");\\split the list with delimiter and extracts titles and names
                String tle=titlename[0];
                String name=titlename[1];

           }     
       }

但我不知道如何比较并获得具有两个标题的名称。

最佳答案

这段代码工作正常...

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class Notepad {

    public static void main(String args[]) {
        final List<String> titles = new ArrayList<>();
        titles.add("miss | shannon sperling");
        titles.add("mr | john smith");
        titles.add("prof | kim taylor");
        titles.add("prof.dr | kim taylor");
        gluetitles(titles);
    }

    static void gluetitles(final List<String> titles) {
        final Map<String, String> titleMap = new HashMap<>();
        for (final String names : titles) {
            final String[] titleName = names.split("\\|");
            final String title = titleName[0];
            final String name = titleName[1];
            if (doesMapContainName(titleMap, title, name)) {
                titleMap.put(name, title);
            }
        }
        for (final Entry<String, String> s : titleMap.entrySet()) {
            System.out.println("Name is " + s.getKey() + " Title is "
                    + s.getValue());
        }
    }

    private static boolean doesMapContainName(
            final Map<String, String> titleMap, final String title,
            final String name) {
        return (titleMap.get(name) != null && titleMap.get(name).length() < title
                .length()) || !titleMap.containsKey(name);
    }
}

contain 方法有点脏,但总的来说就是它是否存在于 map 中,检查这个新值是否比我们已知的值长,如果是,则添加它,如果不存在'存在于 map 中,添加它。这假设数据总是像示例中那样连接标题,我们有一个带有 prof.dr 和一个带有 prof

关于java - Java中对象的处理列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19831598/

相关文章:

java - 正则表达式不从 html 标签中提取图像 url

java - 多输出零 reducer

java - Elasticsearch 中的聚合解析

Java :Using final for local variables

java - fragment 中的多个 AutoCompleteTextView

java - 来自 OSGI 的可配置 Java Servlet

java - 为基于注释的 Spring MVC Controller 设置混合配置

java - 如何通过 "findById"访问 RESTful 服务的 "getJSON"方法?

java - 将文本附加到java文本区域中的某些列

java - jsf 1.2 验证并关闭后弹出窗口不上传新数据