簡體   English   中英

Java LinkedList獲取第一個元素

[英]Java LinkedList obtaining first element

我有一個Java LinkedList ,它存儲兩個值(下面的代碼)。

我想知道我如何只能獲得第一個值?

我有:

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

我希望能夠只打印列表中的號碼。 可能嗎?

首先,請注意,通過執行list.add(number + " " + string) 您將添加一個對象 ,即由numberstring串聯而成的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM