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
} 展开
//list中有几个数据一样的
//第一个是 id=123 itemId=asdfghjk name="张三"
//第二个是 id=456 itemId=asdfghj name="张四"
//第三个是 id=789 itemId= asdfgh name ="李三"
if( 这里如何判断ItemId最长的值){
// 然后把其他ItemId值更换为最长的itemIdzhi
} 展开
3个回答
展开全部
其实你这不用每次判断是否最长的,只需找出最长的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表达式你就更看不懂了,代码不是越短越好的,关键要让你看懂
展开全部
首先你的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;
}
}
然后整体代码:
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询