java List字符判断 获取最长的那个再把其他的值换成这个最长的

List<Item>list=itemDao.finlist(item);//list中有几个数据一样的//第一个是id=123itemId=asdfghjkname="... List<Item> list = itemDao.finlist(item);
//list中有几个数据一样的
//第一个是 id=123 itemId=asdfghjk name="张三"
//第二个是 id=456 itemId=asdfghj name="张四"
//第三个是 id=789 itemId= asdfgh name ="李三"
if( 这里如何判断ItemId最长的值){
// 然后把其他ItemId值更换为最长的itemIdzhi
}
展开
 我来答
巨蟹神算子
2018-09-11 · TA获得超过437个赞
知道小有建树答主
回答量:292
采纳率:90%
帮助的人:117万
展开全部

其实你这不用每次判断是否最长的,只需找出最长的itemId,然后把所以的item I的都替换成最长的就行了。

public class Main {
    public static void main(String[] args) {
        List<Item> list = new ArrayList<>();
        list.add(new Item(123, "asdfghjk", "张三"));
        list.add(new Item(456, "asdfghj", "张四"));
        list.add(new Item(789, "asdfgh", "李三"));

        // itemId字段最长的元素
        Item item = getItemIdLongest(list);
        System.out.println(item);

        String itemId = item.getItemId();
        for (Item it : list) {
            // 将itemId替换成最长的itemId的值
            it.setItemId(itemId);
        }
        System.out.println(list);
    }

    /**
     * 获取itemId字段最长的元素
     *
     * @param list
     * @return
     */
    private static Item getItemIdLongest(List<Item> list) {
        List<Item> newList = new ArrayList<>(list);
        Collections.sort(newList, new Comparator<Item>() {
            @Override
            public int compare(Item o1, Item o2) {
                return o2.getItemId().length() - o1.getItemId().length() > 0 ? 1 : -1;
            }
        });
        return newList.get(0);
    }
}

class Item {
    private Integer id;
    private String itemId;
    private String name;

    public Item() {
    }

    public Item(Integer id, String itemId, String name) {
        this.id = id;
        this.itemId = itemId;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getItemId() {
        return itemId;
    }

    public void setItemId(String itemId) {
        this.itemId = itemId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Item{" +
                "id=" + id +
                ", itemId='" + itemId + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}
更多追问追答
追问
那要是有几个元素都要最长的呢
比方是还有itemParentId itemParentIds
还有就是String里没有Longest这个语法啊
追答
你从哪看到我用Longest语法了,那只是个函数名,你取什么名字都可以的。需要比较别的字段只需要重写getItemIdLongest方法里compare方法的实现逻辑就行了。
你确定楼下你采纳的答案能运行起来吗,编辑器不安装lombok插件你编译都过不了吧,如果没学过lambda表达式你就更看不懂了,代码不是越短越好的,关键要让你看懂
秋梵希恩O
2018-09-11 · 超过10用户采纳过TA的回答
知道答主
回答量:21
采纳率:50%
帮助的人:10.6万
展开全部
首先你的Item类各条属性要有get(),set()方法。
然后整体代码:
public class MainClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Item>list=new ArrayList<>();

list.add(new Item("123", "qwer", "张三"));
list.add(new Item("456", "asfsdfsd","李四"));
list.add(new Item("789", "aaaa", "张三"));
list.add(new Item("000", "xa", "张三"));

String maxString="";
for(int i=0;i<list.size();i++) {
if (list.get(i).getItemId().length()>maxString.length()) {
maxString=list.get(i).getItemId();
}
}

for(int i=0;i<list.size();i++) {

list.get(i).setItemId(maxString);

}

//输出 itemID
// for(int i=0;i<list.size();i++) {
// System.out.println(list.get(i).getItemId());
// }

}
}
public class Item {

private String id;

private String itemId;

private String name;

public Item(String id,String itemId,String name) {
this.id=id;
this.itemId=itemId;
this.name=name;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getItemId() {
return itemId;
}

public void setItemId(String itemId) {
this.itemId = itemId;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
VayCi
2018-09-11 · TA获得超过620个赞
知道小有建树答主
回答量:1021
采纳率:50%
帮助的人:323万
展开全部
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.*;
import java.util.stream.Collectors;

/**
 * @author red
 */
public class App {

    public static void main(String[] args) {

        // 构造数据
        List<Item> list = new ArrayList<>();
        list.add(new Item("123","asdfghjk","张三"));
        list.add(new Item("456","asdfghj","张四"));
        list.add(new Item("789","asdfgh","李三"));

        // 获取最大itemId
        Object maxItem = list.stream()
                .max(Comparator.comparingInt(x -> x.getItemId().length()))
                .orElseThrow(NoSuchElementException::new);
        String maxItemId = ((Item) maxItem).getItemId();

        // 替换
        List newList = list.stream().peek(p->p.setItemId(maxItemId)).collect(Collectors.toList());
        System.out.println(newList.toString());
    }
}

@AllArgsConstructor
@Data
class Item {
    private String id;
    private String itemId;
    private String name;

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式