2014-04-18 3 views
1

문자열을 입력 스트림에서 arraylist에 저장하려고했습니다.입력 스트림에서 문자열의 읽기 전용 arraylist 만들기

첫째

나는 나는이 ArrayList의에이 문자열을 저장하려고 다음

IOUtils.copy(inputStream , str); 
str.toString(); 

사용하여 문자열로 inputStream을 변환 한 :

:

public static final List<String> list = Collections.unmodifiableList(new ArrayList<String>(Arrays.asList(str.split("\n")))); 

그것은 오류를 보여주고있다

  1. 불법 수식 어 매개 변수 목록에 대한 최종 만이 허용
  2. 유형의 안전 : List 형태의 표현이

어디 내가 잘못 알려주세요 목록에 부합되지 않은 변환이 필요합니다?

답변

0

당신이 방법 staticpublic 유형 내에서 사용하는 경우 보자이

List<String> list = Collections.unmodifiableList(new ArrayList<String>(Arrays.asList(str.split("\n")))); 
+0

하거나 컬렉션 목록 = Collections.unmodifiableList (새로운 ArrayList를 (Arrays.asList (str.split에서 setter 메소드를 사용하여 수정, 추가 할 수 없습니다 불가능한리스트에 의해

"\엔")))); – andy

+0

그래, 알았어. 고마워. :) – user3505394

+0

나는이 목록을 반환하기를 원한다면, 반환되는 형식의 종류는 List 일까? – user3505394

0

좋아하세요 유형

를 제거 로컬 변수에 허용되지 않습니다. 먼저 정적공용은 클래스 필드에만 적용 할 수 있습니다 (메소드가 아니라 데이터에 대해 말하면). 로컬 변수에는 적용 할 수 없습니다.

최종 키워드에 대한 몇 마디가 있습니다. Java에는 두 가지 유형이 있습니다. 기본 요소 (int, float, double 등) 및 참조입니다. 원시 형 변수에 final 키워드를 적용하면 실제로 변경되지 않도록 보호됩니다.

참조 유형의 경우 더욱 복잡합니다. 예 :

final List<String> list = new ArrayList<>(); 

목록 변수 (실제 목록에 대한 참조)는 변경할 수 없지만 목록 자체는 수정할 수 있습니다. 그것은 당신에게 목록을 제공으로

final List<String> list = Collections.unmodifiableList(new ArrayList<>()); 
0

Collections.unmodifiableList에서 직접, Arrays.asList을 전달할 수 있습니다 : 당신은 수정에서 목록을 보호하려는 경우, 당신은 unmodifiableList 방법을 사용합니다. ArrayList 인스턴스를 다시 랩 할 필요가 없습니다.

또한 새로 만든 목록에 대한 참조가 없습니다.

당신은 다음과 같이 수행 할 수 있습니다

List<String> list = Collections.unmodifiableList(Arrays.asList(str.split("\n"))); 

Arrays.asList함으로써 요소를 추가하거나 제거 할 수 없습니다.당신은 (제거 또는 내부 목록

0
package com.test; 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.List; 
public class Test { 
    public static void main(String[] args) throws FileNotFoundException, IOException { 
     InputStream in = new FileInputStream(new File("/home/ikuser/testing.txt"));// Give Path Of the file 
     List<String> list = new ArrayList<String>(); // Initialize List 
     BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
     StringBuilder out = new StringBuilder(); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      out.append(line); 
      list.add(line); // Add Line in the list 
     } 
     reader.close(); 
     for(String l : list){ 
      System.out.println(l); //list print 
     } 
    } 
} 
관련 문제