如何从存储在ArrayList中的字符串数组集合中获取单个字符串数组?
嘿,我懂你现在的处境——把每本书拆成包含标题、作者、ISBN的字符串数组,再把这些数组全塞进ArrayList里,现在想把单个的书数组取出来操作,对吧?这事儿其实没你想的那么绕,我给你掰扯清楚:
首先先明确下前提,假设你是这么声明ArrayList的:ArrayList<String[]> bookList = new ArrayList<>();
(要是你声明的时候用了泛型List<String[]>也一样,不影响后续操作)
两种常用的获取方式:
按索引直接取单个数组
Java里集合的索引是从0开始的哦,比如你想拿第一本存进去的书,就这么写:String[] firstBook = bookList.get(0);
拿到这个数组之后,你就可以通过数组的索引对应取出具体字段了——记得你存的时候是[标题, 作者, ISBN],所以:String bookTitle = firstBook[0];String bookAuthor = firstBook[1];String bookIsbn = firstBook[2];
这样就能单独操作每一个字段啦。遍历集合批量获取每个数组
要是你想把所有书都过一遍,用增强for循环最方便,代码写起来清爽:for (String[] singleBook : bookList) { // 这里的singleBook就是每次循环拿到的单个书数组 String title = singleBook[0]; String author = singleBook[1]; String isbn = singleBook[2]; // 比如打印出来看看 System.out.println("书名:" + title + " | 作者:" + author + " | ISBN:" + isbn); }要是你需要用到数组在集合里的位置索引,就用普通for循环:
for (int i = 0; i < bookList.size(); i++) { String[] currentBook = bookList.get(i); // 这里currentBook就是第i+1本书对应的数组,按需操作就行 }
最后给你提个小建议哈:现在用数组存每本书的信息完全能跑,但如果之后你要给书加更多属性(比如出版日期、页数),或者要做一些字段校验,不如自定义一个Book类,把标题、作者这些做成成员变量,再写getter和setter方法,这样代码可读性会高很多,也不会因为数组索引搞混字段顺序~不过当下先搞定你的需求为主,这个方案足够用啦!
备注:内容来源于stack exchange,提问作者Bill H

