我无法绕过一个概念.我正在尝试将a转换ArrayList<String>为List(或List<String>),但我一直遇到强制转换异常.是的,我看到了将字符串数组转换为列表的代码,但我觉得这是一个不同的场景.我的相关代码在这里,请注意声明是因为我使用GWT,因此必须声明一些东西为静态和最终...
private static List<String> values;
Ioma.dataservice.getPendingOrders(new AsyncCallback<ArrayList<Order>>(){
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(ArrayList<Order> result) {
ArrayList<String> orderNumbers = new ArrayList<String>();
//problem here, cannot cast arraylist<string> to list string for some reason? idk. SO it maybe?
for(int i=0;i<result.size();i++){
System.out.println("ordernumber: " + result.get(i).getOrderNumber());
System.out.println("arraysize: " + result.size());
orderNumbers.add(Integer.toString(result.get(i).getOrderNumber()));
}
for (int i=0; i<orderNumbers.size();i++){
values.add(orderNumbers.get(i));
}
cellList.setRowData(values);
}
});
Run Code Online (Sandbox Code Playgroud)
基本上我正在尝试创建一个想要List作为输入的cellList.我从数据库查询中获取了一个订单数组列表,然后迭代以获取订单号,然后将其放入arrayList中,然后我想将其转换为List以在cellList中使用.有人可以解释为什么我不能这样做以及适当的方法应该是什么?
我试图用java8的Collectors.toMap上Stream的ZipEntry.它可能不是最好的主意,因为在处理过程中可能会出现异常,但我想它应该是可能的.
我现在得到一个编译错误(类型推理引擎,我猜),我不明白.
这是一些提取的演示代码:
import java.io.IOException;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class TestMapCollector {
private static class MyObject {
}
public static void main(String[] argv) throws IOException {
try (ZipFile zipFile = new ZipFile("test")) {
Map<String, MyObject> result = zipFile.stream()
.map(ZipEntry::getName)
.collect(Collectors.toMap(f -> "test", f -> new MyObject()));
}
}
}
Run Code Online (Sandbox Code Playgroud)
此代码按原样构建,但如果您只是对该.map(ZipEntry::getName)行进行注释,则不会构建该代码.好像toMap收集器可以工作,如果输入是一个流String但不是输入是一个流ZipEntry?
作为参考,这是构建错误的开始,它非常模糊:
no suitable method found for collect(Collector<Object,CAP#1,Map<String,MyObject>>)
method Stream.<R#1>collect(Supplier<R#1>,BiConsumer<R#1,? super CAP#2>,BiConsumer<R#1,R#1>) …Run Code Online (Sandbox Code Playgroud) 如何使用Java Stream Api替换此代码?
for (Book book : Books.getAllBooks()) {
for (SearchResult searchResult : searchResultList) {
if (searchResult.getTableName().replace("attr_", "") .equals(book.getTableName())) {
bookList.add(book);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我得到了一个从 db 调用返回的列表。
List<employee> list = empolyeeRepository.findByEmployeeId(id);
Run Code Online (Sandbox Code Playgroud)
列表包含员工 pojo 类对象。我想删除一个属性,让我们在从休息电话返回时说“员工银行账户号”。
@RequestMapping(value = "/employeeInformation/{id}",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
@Timed
public List<Employee> getEmployeeInformation(@PathVariable("id") String id) throws Exception {
return empolyeeRepository.findByEmployeeId(id);
}
Run Code Online (Sandbox Code Playgroud)
是否有任何注释或良好做法可以做到这一点?
我有一个类,它将元素添加到ArrayList(实例变量).当我使用Junit为类编写测试用例时,我只对类初始化一次.我在两个测试用例中都做了同样的工作.
public class Solution {
List<String> list = new ArrayList<String>();
public void modifyList() {
list.add("A");
list.add("B");
list.add("C");
}
}
Run Code Online (Sandbox Code Playgroud)
SolutionTest.java
public class TestSolution {
Solution sol = new Solution();
@Test
public void testModifyList1() {
sol.modifyList();
Assert.assertEquals(3, sol.list.size());
System.out.println(sol.list);
}
@Test
public void testModifyList2() {
sol.modifyList();
Assert.assertEquals(3, sol.list.size());
System.out.println(sol.list);
}
}
Run Code Online (Sandbox Code Playgroud)
当我在两个测试用例中打印列表时,为什么列表在第二个测试用例中打印时不返回[A, B, C, A, B, C].它为什么只是回归[A, B, C].我的理解是,该类只初始化一次,因此列表只有一个副本,应该修改两次.但是,当我打印列表时,它只打印从该测试用例修改的值.有人可以解释一下这种行为吗?
当我在两个不同的测试用例中对同一个对象调用相同的方法时,为什么列表不会被更新两次?
例如,在制作游戏时,我有很多想要存储的常量。我还希望很多类能够访问这些常量。存储和访问所有这些值的最佳方式是什么?目前,我只是将最终值存储在一个单独的类中,然后创建存储常量的类的实例。要访问这些值,我会执行“objectName.nameOfConstant”。所以我的问题是,它们是存储所有这些常量的正式方法还是更好的方法。
我有一个List<DataBean>bean定义如下,
private int id;
private int activityId;
private String info;
private int answerCode;
private String otherData;
Run Code Online (Sandbox Code Playgroud)
还有另一个带有不同 bean 的 List List<Answer>,其 bean 如下所示:
private int id;
private int code;
Run Code Online (Sandbox Code Playgroud)
我需要找到所有的答案List<Answer>,其code包含在列List<DataBean>.answerCode。
例子:
List<DataBean> 包含
id activityId info answerCode
1 1 .. 144
1 1 .. 153
1 2 .. 160
1 3 .. 177
Run Code Online (Sandbox Code Playgroud)
List<Answer> 包含
id code
--------
1 160
2 161
Run Code Online (Sandbox Code Playgroud)
因此,我的结果List<Answer>只有一个: 1 160.
我有以下内容:
List<String> keys
List<String> values
Run Code Online (Sandbox Code Playgroud)
我想将这两个列表映射到Map<String, String>使用Java 8 Streams.列表具有相同的大小并以相同的方式排序.
我尝试用以下方法映射这两个
Map<String, String> result= keys.stream().
collect(Collectors.toMap(keys::get, values::get));
Run Code Online (Sandbox Code Playgroud)
但这根本不起作用 - 我怎么能这样做呢?提前致谢 :)
是否可以使用java流来更改列表中地图的键,即给出地图的原始列表是:
List<Map<String, String>> list = new ArrayList<Map<String, String>>() {{
add(new HashMap<String, String>() {{
put("id", "1");
put("display", "foo");
}});
add(new HashMap<String, String>() {{
put("id", "2");
put("display", "bar");
}});
}};
System.out.println(list.toString());
Run Code Online (Sandbox Code Playgroud)
从上面的列表(输出演示)
[{display=foo, id=1}, {display=bar, id=2}]
Run Code Online (Sandbox Code Playgroud)
到地图列表:
[{sample=foo, sample_id=1}, {sample=bar, sample_id=2}]
Run Code Online (Sandbox Code Playgroud)
基本上,将键“id”更改为“sample_id”,并将“display”更改为“sample”。
java ×10
java-stream ×4
java-8 ×3
list ×2
arraylist ×1
arrays ×1
class ×1
constants ×1
gwt ×1
hashmap ×1
hibernate ×1
junit ×1
spring-boot ×1
unit-testing ×1