如何在Java中从树映射中获取值?

如何在Java中从树映射中获取值?,java,arrays,jlist,treemap,Java,Arrays,Jlist,Treemap,我的问题是无法从树映射中获取对象“项”(值)。我需要将该信息发送到我的GUI类,并在JList中显示,以获得选择列表,这样可以轻松地选择歌曲并将其添加到播放列表中,但我得到的唯一输出是“01、02、03、04、05”(键)。请帮忙,因为我是初学者,不知道该怎么办 public class LibraryData { private static class Item { Item(String n, String a, int r) { name = n;

我的问题是无法从树映射中获取对象“项”(值)。我需要将该信息发送到我的GUI类,并在JList中显示,以获得选择列表,这样可以轻松地选择歌曲并将其添加到播放列表中,但我得到的唯一输出是“01、02、03、04、05”(键)。请帮忙,因为我是初学者,不知道该怎么办

public class LibraryData {

private static class Item {


    Item(String n, String a, int r) {
        name = n;
        artist = a;
        rating = r;
    }

    // instance variables 
    private String name;
    private String artist;
    private int rating;
    private int playCount;

    public String toString() {
        return name + " - " + artist;
    }
}


private static Map<String, Item> library = new TreeMap<String, Item>();


static {
    library.put("01", new Item("How much is that doggy in the window", "Zee-J", 3));
    library.put("02", new Item("Exotic", "Maradonna", 5));
    library.put("03", new Item("I'm dreaming of a white Christmas", "Ludwig van Beethoven", 2));
    library.put("04", new Item("Pastoral Symphony", "Cayley Minnow", 1));
    library.put("05", new Item("Anarchy in the UK", "The Kings Singers", 0));
}


public static String[] getLibrary() {
String [] tempa = (String[]) library.keySet().toArray(new String[library.size()]);
return tempa;
}
我做了这样的东西,很有用

public static Object[] getLibrary() {
Collection c = library.values();
return c.toArray(new Item[0]);
谢谢你们,10个小时后我终于完成了!
}

使用以下代码:

String [] tempa = (String[]) library.keySet().toArray(new String[library.size()]);
您正在从地图上获取所有钥匙。如果需要所有值,请使用:

library.values();
最后,如果需要按键获取值,请使用
vget(对象键)

这将返回地图中的第一个
项目

现在还不清楚你想要哪一个,但基本上这些都是选项

**编辑**

由于需要所有值,因此可以执行以下操作:

library.values().toArray()

JList需要一个对象数组或向量,因此应该可以使用。

如果您想按位置获取值和键,可以使用:

键:library.keySet().toArray()[0]

值:library.get(key)

或者(如果你只是想要价值)


您可以使用
ArrayList

import java.util.ArrayList;
import com.example.Something; // It can be ANYTHING
//...
ArrayList<Something> somethingList = new ArrayList<Something>();
//...
somethingList.add(new Something("string", 1, 2.5, true));
//...
boolean isSomething = somethingList.get(somethingList.size() - 1); // Gets last item added
//...
int listSize = somethingList.size();
//...
somethingList.remove(somethingList.size() - 1); // Removes last item and decrements size
//...
Something[] nativeArray = somethingList.toArray(new Something[somethingList.size()]); // The parameter is needed or everthing will point to null
// Other things...
Object keyAtIndex0 = library.keySet.toArray(new Object[library.size()])[0];
Object value = library.get(keyAtIndex0);
1-在Java中灵活管理数组的最佳方法是使用
ArrayList
s

2-
ArrayList
s易于从和向中添加、获取、删除和执行更多操作

3-
Treemap
s有点。。。武断的。我要说的是,如果从树映射中使用
get(objecto)
方法,那么
objecto
必须是一个键,这不是很灵活

如果需要,请使用以下代码:

import java.util.ArrayList;
import com.example.Something; // It can be ANYTHING
//...
ArrayList<Something> somethingList = new ArrayList<Something>();
//...
somethingList.add(new Something("string", 1, 2.5, true));
//...
boolean isSomething = somethingList.get(somethingList.size() - 1); // Gets last item added
//...
int listSize = somethingList.size();
//...
somethingList.remove(somethingList.size() - 1); // Removes last item and decrements size
//...
Something[] nativeArray = somethingList.toArray(new Something[somethingList.size()]); // The parameter is needed or everthing will point to null
// Other things...
Object keyAtIndex0 = library.keySet.toArray(new Object[library.size()])[0];
Object value = library.get(keyAtIndex0);

祝你好运

我正在返回一个字符串值列表作为treemap值。使用的方法是

 private Map<String, TreeSet<String>> result;

    TreeSet<String> names=  result.get(key);
     for(String contactName: names){
      print contactName;
     }
私有映射结果;
TreeSet name=result.get(键);
for(字符串contactName:names){
打印联系人姓名;
}

这里有一个答案。请将代码张贴在您试图获取
项的位置。Does
library.get(“01”)不工作?我相信枚举更合适。@Christian我的GUI类中只有这一位
JList tracks=new JList(LibraryData.getLibrary())我想将这些歌曲中的每一首放入JList。我试图将
library.keySet()
更改为
library.values()
,但随后出现异常。GUI中的代码位是:
JList tracks=newjlist(LibraryData.getLibrary())
 private Map<String, TreeSet<String>> result;

    TreeSet<String> names=  result.get(key);
     for(String contactName: names){
      print contactName;
     }