我有一个Java LinkedList
,它存储两个值(下面的代码)。
我想知道我怎么才能获得第一个值?
我有:
LinkedList list = new LinkedList();
list.add(number+" "+string);
我希望能够从列表中打印出数字。有可能吗?
答案 0 :(得分:4)
首先,请注意,通过执行list.add(number + " " + string)
,您将添加单个对象,即通过连接number
和string
形成的字符串。< / 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;
当然,您可以使用类方法和泛型来更好地管理所有方法。