获取第一个元素的Java LinkedList

获取第一个元素的Java LinkedList,java,Java,我有一个Java LinkedList,它存储下面的两个值代码 我想知道如何才能只获得第一个值 我有: LinkedList list = new LinkedList(); list.add(number+" "+string); 我希望能够从列表中打印出号码。有可能吗?首先,请注意,通过执行list.addnumber++string,您添加的是单个对象,即通过连接number和string形成的字符串 也就是说,您可以尝试这样的方法来获取第一个元素的第一部分: list.get(0).s

我有一个Java LinkedList,它存储下面的两个值代码

我想知道如何才能只获得第一个值

我有:

LinkedList list = new LinkedList();
list.add(number+" "+string);

我希望能够从列表中打印出号码。有可能吗?

首先,请注意,通过执行list.addnumber++string,您添加的是单个对象,即通过连接number和string形成的字符串

也就是说,您可以尝试这样的方法来获取第一个元素的第一部分:

list.get(0).split(" ")[0]
例如:

int number = 17;
String string = "hello";

LinkedList<String> list = new LinkedList<String>();
list.add(number+" "+string);


// Print number of first item:
System.out.println(list.get(0).split(" ")[0]);  // prints "17"

该列表不存储两个值。它存储一个对象,即通过将数字与空格和字符串连接而创建的字符串

如果要访问单个对象,应使用映射而不是列表,或创建包含数字和字符串的自定义对象:

a

此外:

a您不应该再使用非泛型集合。仿制药是7年前推出的,现在不应该有任何理由不使用它们

所以你应该用这个:

LinkedList<String> list = new LinkedList<String>();
或者这个:

LinkedList<MyCustomObject> list = new LinkedList<MyCustomObject>();
b你确定要链接列表吗?在大多数情况下,ArrayList是通用列表实现。如果您有许多add语句,并且事先不知道列表的大小,则LinkedList的性能会更好,但是ArrayList在随机访问时的性能会更好。

我想您只是指数字

首先获取索引0处的对象:

String node = list.get(0);
然后通过寻找空间来提取第一部分

String num = node.substring(0,node.indexOf(' '));
尽管我建议为此类实现研究HashMaps,它采用键、值对:

例如,您将需要以下内容:

Map<Long,String> myMap = new HashMap<Long,String>();
myMap.put(number,string);
LinkedList<Pair<Number, String>> list = new LinkedList<Pair<Number, String>();
list.add(new Pair<Number, String>(number, string));

您正在向该列表添加字符串。x+y,其中x或y是字符串,则生成字符串。如果您想访问数字和字符串,则应该考虑使用另一种类型——这里不是字符串。比如:

Map<Long,String> myMap = new HashMap<Long,String>();
myMap.put(number,string);
LinkedList<Pair<Number, String>> list = new LinkedList<Pair<Number, String>();
list.add(new Pair<Number, String>(number, string));
Pair是一个类,您可以在Apache Commons中找到:
许多有用Java类的源代码

我建议将数字和字符串封装到一个类中,如下所示

public final class Pojo {
    private final Number number;
    private final String string;

    public Pojo(Number number, String string) {
        this.string = string;
        this.number = number;
    }

    public void getNumber() {
        return number;
    }

    public void getString() {
        return string;
    }

    @Override
    public String toString() {
        return number + " " + string;
    }
}
然后,创建如下列表:

List<Pojo> list = new LinkedList<Pojo>(); // use generics for compile-time type safety
list.add(new Pojo(42, "Answer to the Ultimate Question of Life, the Universe, and Everything"); // add a Pojo
System.out.println(list.get(0).getNumber());
作为单个字符串,如果要获取数字:

list.get(index).split(" ")[0]
即使有效,这也不是管理一对值的明确方法。 从面向对象的角度来看,这是正确的上下文:D,直接使用对象:

class Pair {
int number;
String str;
}
将您的对象放入列表:

Pair thePair = list.get(0);
number = (Number)thePair.left;
Pair pair = new Pair();
pair.number = 1;
pair.str = "hello";
list.add(pair);
并获取您的电话号码:

((Pair)list.get(0)).number;

当然,您可以使用类方法和泛型更好地管理所有内容。

谢谢@aioobe,您在读/编译方面很出色:,这是在IDE之外编写时遇到的错误。@asgs,不知道,但我和Sean有地图建议!也许有人讨厌地图!!哈哈!我会记住那句话。。也许有人讨厌地图:-有人显然想从字面上回答这个问题,而我拒绝这样做。从字面上回答这个问题会给出不好的建议。是的,但您并没有访问原始值,而是访问其字符串表示形式。True。他说他想打印出数字,所以我认为字符串表示就足够了。
((Pair)list.get(0)).number;