只是想知道你是否可以使用拆分器类来拆分从LinkedList移动到迭代的详细信息?这是我在迭代LinkedList之前使用的初始拆分的代码:
Scanner input = new Scanner(new File("today.txt"));
while (input.hasNextLine())
{
names = input.nextLine();
if(names.contains(":"))
{
splitter2 = names.split(":");
name = splitter2[0];
times = splitter2[1];
System.out.printf("%s\t\t %s \n",name, times);
}
q1.add(names);
}
Q1是我创建的LinkedList。 是否有分裂迭代列表,以便我只能在回调新的迭代列表时搜索名称?
答案 0 :(得分:0)
如果我理解正确,Map会比LinkedList更适合您的需求。
您可以拥有Map<String,String>
,其中密钥为name
,值为times
。或者你可以有一个Map<String,SomeObject>
,其中键是名称,值是一些包含你从该行读取的数据的对象。
然后,您可以拥有:
而不是q1.add(names)
Map<String,String> map = new HashMap<>();
...
while (input.hasNextLine()) {
...
map.put (name,times);
...
}
或
Map<String,SomeObject> map = new HashMap<>();
...
while (input.hasNextLine()) {
...
map.put (name,new SomeObject(name,times);
...
}
稍后您可以在地图中搜索特定名称(map.containsKey(name)
或map.get(name)
),或迭代所有名称(使用map.keySet()
)。
答案 1 :(得分:0)
这有点不清楚,但我认为你要找的是HashMap
。如果想要将名称和时间放入数据结构中,以便以后可以按名称搜索,那么您需要HashMap<String,String> map
,然后
map.put(name,times);
添加到地图中。稍后,您可以使用
检索特定名称的时间map.get(name);
这里有一些假设:
LinkedHashMap
。)Multimap
。)答案 2 :(得分:0)
您可以创建自定义Class
,将q1
更改为此type
的列表,添加元素split
。
final List<Person> q1=new LinkedList<Person>();
{...other code...}
//your code change to add to this list when split can occur
if(names.contains(":"))
{
splitter2 = names.split(":");
name = splitter2[0];
times = splitter2[1];
System.out.printf("%s\t\t %s \n",name, times);
q1.add(new Person(name,times);
}
然后您可以迭代list
并将属性name
与search key
进行比较:
final String searchKey="george";
for(final Person person : q1){
if(person.getName().equalsIgnoreCase(searchKey))
System.out.println("I found " + searchKey +"!");
}
人员类:
public class Person {
private String name;
private String time;
public Person(String name, String time) {
this.name = name;
this.time = time;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setTime(String time) {
this.time = time;
}
public String getTime() {
return time;
}
}
或者,您可以在迭代期间以与之前相同的方式迭代和拆分String list
。以前的方法更好。
示例:
public static void main(String[] args) {
final String search = "george";
List<String> q1 = new LinkedList<String>();
q1.add("tom:120000");
q1.add("george:130000");
q1.add("john:120000");
for (final String q : q1) { //for each string q in the list q1
if (q.contains(":")) {
final String[] split = q.split(":");
final String name = split[0];
final String time = split[1];
if (name.equalsIgnoreCase(search)) {
System.out.println("I found " + search + "!");
System.out.println(name + " : " + time);
break;
}
}
}
}