gpt4 book ai didi

Java Treemap和ArrayList传递项

转载 作者:行者123 更新时间:2023-12-02 06:36:17 24 4
gpt4 key购买 nike

我有以下代码,一个带有水果数组列表的树形图。在removeAndAdd函数中,我想删除[apple,orange]并将其添加到容器2的bList中。但显示器带有额外的括号[]。我的方法正确吗?

public class TreeMapEx {

private TreeMap<Integer, List<String>> tMap = new TreeMap<Integer, List<String>>();
private List<String> aList = new ArrayList<String>();
private List<String> bList = new ArrayList<String>();
public static void main(String[] args) {
TreeMapEx tm = new TreeMapEx();
tm.addToTree();
tm.addToList(1);
tm.showItem(1);
tm.showItem(2);
tm.removeAndAdd(1);
tm.showItem(2);

}

private void addToTree() {
tMap.put(1, aList);
bList.add("dragonfruit");
tMap.put(2, bList);

}

private void addToList(int item) {
if (tMap.containsKey(item)) {
aList = new ArrayList<String>();
aList.add("apple");
aList.add("orange");
tMap.put(item, aList);
System.out.println(item + " added");
} else {
System.out.println(item + " not found");
}
}

private void showItem(int item){

System.out.println(item+" contain " + tMap.get(item));
}

private void removeAndAdd(int item){
if (tMap.containsKey(item) && tMap.containsValue(aList)) {
//remove everything from 1 and add to 2
aList = new ArrayList<String>();
List<String> temp;
temp = tMap.get(item);

bList.add(temp.toString());
}
}

}

Output:
1 added
1 contain [apple, orange]
2 contain [dragonfruit]
2 contain [dragonfruit, [apple, orange]]

如何去除容器2中[苹果、橙子]的附加支架。

对于这样的事情

1 added
1 contain [apple, orange]
2 contain [dragonfruit]
2 contain [dragonfruit,apple, orange]

最佳答案

由于方法 showItem 中使用了以下代码,因此会打印 [apple, Orange] 的附加括号。

System.out.println(item+"contains "+ tMap.get(item));

相当于使用下面的代码打印List的元素。

System.out.println(item+"contains "+ tMap.get(item).toString());

注意:tMap.get(item)是一个列表类型(List)

如果你想显示没有附加括号的元素。您可以使用以下代码:

    private void showItem(int item){
System.out.println(item+" contain ");
for(String str:tMap.get(item) )
{
System.out.println( str);
}
}

此外,还有一件事是使用不正确。请引用方法removeAndAdd

更改bList.add(temp.toString());到bList.addAll(temp);

如果使用 bList.add(temp.toString()),带有 [apple, Orange] 的 List 元素将作为字符串添加到 bList 中。实际上,你想分别与苹果和橙子一起添加。使用bList.addAll(temp);

看看为什么Collection,例如List打印附加括号被添加。请引用java.util.AbstractCollection源码,重写了toString方法。代码如下:

public String toString() {
Iterator<E> it = iterator();
if (! it.hasNext())
return "[]";

StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = it.next();
sb.append(e == this ? "(this Collection)" : e);
if (! it.hasNext())
return sb.append(']').toString();
sb.append(',').append(' ');
}
}

关于Java Treemap和ArrayList传递项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19614773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com