我有一个像这样的数组列表:
public class FileOperations {
public static void main(String[] args) throws FileNotFoundException {
String searchTerm = args[0];
String fileName1 = args[1];
String fileName2 = args[2];
File file = new File(fileName1);
Scanner scan = new Scanner(file);
while (scan.hasNextLine()) {
if (searchTerm != null) {
try {
BufferedWriter bw = null;
bw = Files.newBufferedWriter(Paths.get(fileName2), StandardOpenOption.CREATE, StandardOpenOption.APPEND);
bw.write(searchTerm);
bw.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
scan.nextLine();
}
scan.close();
}
}
我希望能够从String
列表中创建这样的列表:
List<string[]> definitions
MATERIAL "STEEL" TYPE "Steel" WEIGHTPERVOLUME 7833.414
MATERIAL "STEEL" SYMTYPE "Isotropic" E 2.038902E+10
MATERIAL "STEEL" FY 3.515348E+07 FU 4.569952E+07
MATERIAL "STEEL" HYSTYPE "Kinematic" SSTYPE "Simple"
MATERIAL "CONC" TYPE "Concrete" WEIGHTPERVOLUME 2402.616
MATERIAL "CONC" SYMTYPE "Isotropic" E 2.531051E+09 U 0.2
MATERIAL "CONC" FC 2812279
MATERIAL "CONC" HYSTYPE "Concrete" ENERGYDEGFACT 0
MATERIAL "OTHER" TYPE "Other" WEIGHTPERVOLUME 7833.414
MATERIAL "OTHER" SYMTYPE "Isotropic" E 2.038902E+10
MATERIAL "OTHER" DESIGNTYPE "OTHER"
MATERIAL "OTHER" HYSTYPE "Elastic" IOTENSION 0.01
MATERIAL "OTHER" STRAIN -1 STRESS -1
MATERIAL "OTHER" STRAIN 0 STRESS 0 POINTID "A"
MATERIAL "OTHER" STRAIN 1 STRESS 1
并根据每个数组中的第二个元素分隔列表:
definitions
答案 0 :(得分:0)
为什么不使用GroupBy
?
var listOfGroups = definitions.GroupBy(x => x.Material);
您将获得一个元素列表,其中包含Key
和分组对象列表。
答案 1 :(得分:0)
不仅仅是GroupBy数组中的第二个elemtn:
var groups = definitions.GroupBy(x => x[1]);
它不是一个列表,你得到了什么,它是IEnumerable<IGrouping<string, string[]>>
但我认为它正是你想要的。
答案 2 :(得分:-2)
尝试使用DataTable并使用LINQ进行过滤
DataTable dt=new DataTable();
//Add the data in it
dt.Where() or dt.Select();