java将list集合中的for数据循环添加到String数组中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java将list集合中的for数据循环添加到String数组中相关的知识,希望对你有一定的参考价值。

从Excel表中读取数据放入list集合中,再将list集合中的数据使用for循环,循环添加到String数组中,跪求求具体代码

首先,你要有poi库,这是操作office文档的

然后,给你贴一个excel操作类,你读一下,应该就可以自己写调用了

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.b510.common.Common;
import com.b510.excel.util.Util;
import com.b510.excel.vo.Student;

/**
 * @author Hongten
 * @created 2014-5-20
 */
public class ReadExcel 
    
    /**
     * read the Excel file
     * @param path the path of the Excel file
     * @return
     * @throws IOException
     */
    public List<Student> readExcel(String path) throws IOException 
        if (path == null || Common.EMPTY.equals(path)) 
            return null;
         else 
            String postfix = Util.getPostfix(path);
            if (!Common.EMPTY.equals(postfix)) 
                if (Common.OFFICE_EXCEL_2003_POSTFIX.equals(postfix)) 
                    return readXls(path);
                 else if (Common.OFFICE_EXCEL_2010_POSTFIX.equals(postfix)) 
                    return readXlsx(path);
                
             else 
                System.out.println(path + Common.NOT_EXCEL_FILE);
            
        
        return null;
    

    /**
     * Read the Excel 2010
     * @param path the path of the excel file
     * @return
     * @throws IOException
     */
    public List<Student> readXlsx(String path) throws IOException 
        System.out.println(Common.PROCESSING + path);
        InputStream is = new FileInputStream(path);
        XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
        Student student = null;
        List<Student> list = new ArrayList<Student>();
        // Read the Sheet
        for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) 
            XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
            if (xssfSheet == null) 
                continue;
            
            // Read the Row
            for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) 
                XSSFRow xssfRow = xssfSheet.getRow(rowNum);
                if (xssfRow != null) 
                    student = new Student();
                    XSSFCell no = xssfRow.getCell(0);
                    XSSFCell name = xssfRow.getCell(1);
                    XSSFCell age = xssfRow.getCell(2);
                    XSSFCell score = xssfRow.getCell(3);
                    student.setNo(getValue(no));
                    student.setName(getValue(name));
                    student.setAge(getValue(age));
                    student.setScore(Float.valueOf(getValue(score)));
                    list.add(student);
                
            
        
        return list;
    

    /**
     * Read the Excel 2003-2007
     * @param path the path of the Excel
     * @return
     * @throws IOException
     */
    public List<Student> readXls(String path) throws IOException 
        System.out.println(Common.PROCESSING + path);
        InputStream is = new FileInputStream(path);
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
        Student student = null;
        List<Student> list = new ArrayList<Student>();
        // Read the Sheet
        for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) 
            HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
            if (hssfSheet == null) 
                continue;
            
            // Read the Row
            for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) 
                HSSFRow hssfRow = hssfSheet.getRow(rowNum);
                if (hssfRow != null) 
                    student = new Student();
                    HSSFCell no = hssfRow.getCell(0);
                    HSSFCell name = hssfRow.getCell(1);
                    HSSFCell age = hssfRow.getCell(2);
                    HSSFCell score = hssfRow.getCell(3);
                    student.setNo(getValue(no));
                    student.setName(getValue(name));
                    student.setAge(getValue(age));
                    student.setScore(Float.valueOf(getValue(score)));
                    list.add(student);
                
            
        
        return list;
    

    @SuppressWarnings("static-access")
    private String getValue(XSSFCell xssfRow) 
        if (xssfRow.getCellType() == xssfRow.CELL_TYPE_BOOLEAN) 
            return String.valueOf(xssfRow.getBooleanCellValue());
         else if (xssfRow.getCellType() == xssfRow.CELL_TYPE_NUMERIC) 
            return String.valueOf(xssfRow.getNumericCellValue());
         else 
            return String.valueOf(xssfRow.getStringCellValue());
        
    

    @SuppressWarnings("static-access")
    private String getValue(HSSFCell hssfCell) 
        if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) 
            return String.valueOf(hssfCell.getBooleanCellValue());
         else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) 
            return String.valueOf(hssfCell.getNumericCellValue());
         else 
            return String.valueOf(hssfCell.getStringCellValue());
        
    

百度关键字是:java的poi技术读取Excel[2003-2007,2010],这个帖子下面甚至提供了代码下载。

参考技术A public String[] show (ArrayList<String> list)

String[] str=new String[list.size()];

for (int i=0;i<list.size();i++)
str[i]=list.get(i);


Log.i("Tag",Arrays.toString(str));
return str;

Java for循环对集合的遍历

java集合类的使用可以说是无处不在,总的我们可以将之分为三大块,分别是从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型集合。

     许多情况需要我们遍历出集合中的元素,并做相应的处理。
     下面对各种类型的集合的遍历做一些总结,关于增强for循环,需要注意的是,使用增强for循环无法访问数组下标值,对于集合的遍历其内部采用的也是Iterator的相关方法。如果只做简单遍历读取,增强for循环确实减轻不少的代码量。
关于List与Set类型集合的遍历:
[java] 
import java.util.ArrayList;  
import java.util.HashSet;  
import java.util.Iterator;  
import java.util.List;  
import java.util.Set;  
  
public class ListAndSetTest {  
  
    public static void main(String[] args) {  
        // List集合的遍历  
        listTest();  
        // Set集合的遍历  
        setTest();  
    }  
  
    private static void setTest() {  
        Set<String> set = new HashSet<String>();  
        set.add("JAVA");  
        set.add("C");  
        set.add("C++");  
        // 重复的加不进去。  
        set.add("JAVA");  
        set.add("JAVASCRIPT");  
  
        //set集合遍历方法1,使用iterator  
        Iterator<String> it = set.iterator();  
        while (it.hasNext()) {  
            String value = it.next();  
            System.out.println(value);  
        }  
          
        //set集合遍历方法2,使用增强for循环。  
        for(String s: set){  
            System.out.println(s);  
        }  
    }  
  
    // 遍历list集合  
    private static void listTest() {  
        List<String> list = new ArrayList<String>();  
        list.add("java111");  
        list.add("java222");  
        list.add("java333");  
        list.add("java444");  
        list.add("java555");  
  
        // 遍历方式1 ,使用iterator  
        Iterator<String> it = list.iterator();  
        while (it.hasNext()) {  
            String value = it.next();  
            System.out.println(value);  
        }  
  
        // 遍历方法2 , 使用传统for循环进行遍历。  
        for (int i = 0, size = list.size(); i < size; i++) {  
            String value = list.get(i);  
            System.out.println(value);  
        }  
  
        // 遍历方法3 , 使用增强for循环进行遍历。  
        for (String value : list) {  
            System.out.println(value);  
        }  
    }  
}  
 
关于Map类型集合的遍历,keySet()与entrySet()方法:
[java] view plaincopy
//增强For循环  
public class MapTest {  
  
    public static void main(String[] args) {  
        // 创建一个HashMap对象,并加入了一些键值对。  
        Map<String, String> maps = new HashMap<String, String>();  
        maps.put("111", "java111");  
        maps.put("222", "java222");  
        maps.put("333", "java333");  
        maps.put("444", "java444");  
        maps.put("555", "java555");  
          
        // 传统的遍历map集合的方法1; keySet()  
        //traditionalMethod1(maps);  
        // 传统的遍历map集合的方法2; entrySet()  
        //traditionalMethod2(maps);  
        // 使用增强For循环来遍历map集合方法1; keySet()  
        //strongForMethod1(maps);  
        // 使用增强For循环来遍历map集合方法2; entrySet()  
        strongForMethod2(maps);  
    }  
  
    private static void strongForMethod2(Map<String, String> maps) {  
        Set<Entry<String, String>> set = maps.entrySet();  
        for (Entry<String, String> entry : set) {  
            String key = entry.getKey();  
            String value = entry.getValue();  
            System.out.println(key + " : " + value);  
        }  
    }  
  
    private static void strongForMethod1(Map<String, String> maps) {  
        Set<String> set = maps.keySet();  
        for (String s : set) {  
            String key = s;  
            String value = maps.get(s);  
            System.out.println(key + " : " + value);  
        }  
    }  
  
    // 使用entrySet()方法,获取maps集合中的每一个键值对,  
    private static void traditionalMethod2(Map<String, String> maps) {  
        Set<Map.Entry<String, String>> sets = maps.entrySet();  
        // 取得迭代器遍历出对应的值。  
        Iterator<Entry<String, String>> it = sets.iterator();  
        while (it.hasNext()) {  
            Map.Entry<String, String> entry = (Entry<String, String>) it.next();  
            String key = entry.getKey();  
            String value = entry.getValue();  
            System.out.println(key + " : " + value);  
        }  
    }  
  
    // 使用keySet()方法,获取maps集合中的所有键,遍历键取得所对应的值。  
    private static void traditionalMethod1(Map<String, String> maps) {  
        Set<String> sets = maps.keySet();  
        // 取得迭代器遍历出对应的值。  
        Iterator<String> it = sets.iterator();  
        while (it.hasNext()) {  
            String key = it.next();  
            String value = maps.get(key);  
            System.out.println(key + " : " + value);  
        }  
    }  
}  

以上是关于java将list集合中的for数据循环添加到String数组中的主要内容,如果未能解决你的问题,请参考以下文章

2020/7/14 Java之增强for循环泛型List接口Set接口

一个list集合数据拷贝到另一个集合中

python循环里的列表怎样添加到循环外

你还在用for循环遍历list吗?

set集合和list集合的区别

java Map代替List在for循环中的应用