[英]Java LinkedList obtaining first element
我有一個Java LinkedList
,它存儲兩個值(下面的代碼)。
我想知道我如何只能獲得第一個值?
我有:
LinkedList list = new LinkedList();
list.add(number+" "+string);
我希望能夠只打印列表中的號碼。 可能嗎?
首先,請注意,通過執行list.add(number + " " + string)
您將添加一個對象 ,即由number
和string
串聯而成的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"
該列表不存儲兩個值。 它存儲一個對象,即通過將數字與空格連接而創建的字符串和字符串。
如果要訪問單個對象,則應使用Map而不是List或創建包含數字和字符串的自定義對象:
一種)
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
實現。 如果您有許多add()
語句並且事先不知道List的大小, LinkedList
性能會更好,但是ArrayList
的隨機訪問性能會更好。
我想你的意思只是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);
您正在向該列表添加字符串。 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類的源代碼)
我建議像這樣將您的數字和字符串封裝到一個類中。
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());
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;
當然,您可以使用類方法和泛型來更好地管理所有內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.