Java LinkedList获取第一个元素

时间:2011-09-07 08:27:39

标签: java

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

我想知道我怎么才能获得第一个值?

我有:

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

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

6 个答案:

答案 0 :(得分:4)

首先,请注意,通过执行list.add(number + " " + string) ,您将添加单个对象,即通过连接numberstring形成的字符串。< / p>

那就是说,你可以尝试这样的事情来获得第一个元素的第一部分:

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"

答案 1 :(得分:1)

List不存储两个值。它存储一个Object,通过将数字与空格连接而创建的String和String。

如果要访问单个对象,则应使用Map而不是List或创建包含数字和字符串的自定义Object:

A)

Map<Integer, String> map = new Hashmap<Integer, String>();
map.put(number, string);

b)中

public class MyObject{
  private Number number;
  private String string;
  // + getters and setters
}

此外:

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

所以你应该使用它:

LinkedList<String> list = new LinkedList<String>();

或者这个:

LinkedList<MyCustomObject> list = new LinkedList<MyCustomObject>();

b)你确定要LinkedList吗?在大多数情况下,ArrayList是通用List实现。如果您有多个LinkedList语句并且事先不知道您的列表有多大,add()会表现得更好,但ArrayList对随机访问的效果要好得多。

答案 2 :(得分:1)

我认为你的意思是number

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

String node = list.get(0);

然后通过寻找空间

来提取第一部分
String num = node.substring(0,node.indexOf(' '));

虽然我建议调查HashMaps这样的实现,它采用Key,Value对:

对于您的示例,您将需要以下内容:

Map<Long,String> myMap = new HashMap<Long,String>();
myMap.put(number,string);

答案 3 :(得分:1)

您正在为该列表添加字符串。 x + y,其中x或y是一个字符串,产生一个字符串。如果您想要访问数字和字符串,您应该考虑使用其他类型 - 这里不是字符串。类似的东西:

LinkedList<Pair<Number, String>> list = new LinkedList<Pair<Number, String>();
list.add(new Pair<Number, String>(number, string));

这样,要获取数字,存储在列表的第一个元素中:

Pair thePair = list.get(0);
number = (Number)thePair.left;

Pair是一个类,您可以在Apache Commons中找到: http://commons.apache.org/lang/api-3.0-beta/org/apache/commons/lang3/Pair.html (许多有用的Java类的源代码)

答案 4 :(得分:1)

我建议将你的号码和字符串封装成一个类,就像这样。

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());

答案 5 :(得分:0)

number+" "+string

如果您想获得数字,则使用单个字符串:

list.get(index).split(" ")[0]

即使它有效,这也不是管理一对值的明确方法。 从面向对象的角度来看(这是正确的上下文:D),直接使用对象:

class Pair {
int number;
String str;
}

将您的对象放入列表:

Pair pair = new Pair();
pair.number = 1;
pair.str = "hello";
list.add(pair);

获取您的电话号码:

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

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