내가, 내가 그들을 결합 원이 내 수업목록 개체를 결합하는 방법 Java?
public class DailyIncome {
private String date;
private String total;
}
이 목록 객체입니다하고 나는이 목록을 가지고, 이것은
를 나열하고이 목록 B
입니다이 예상 결과는입니다.
내 기대를 실현할 수 있습니까?
내가, 내가 그들을 결합 원이 내 수업목록 개체를 결합하는 방법 Java?
public class DailyIncome {
private String date;
private String total;
}
이 목록 객체입니다하고 나는이 목록을 가지고, 이것은
를 나열하고이 목록 B
입니다이 예상 결과는입니다.
내 기대를 실현할 수 있습니까?
"내 기대를 실현할 수 있습니까?"
예, 그렇습니다. 그러나 지금까지 질문을하기 전에 시도한 것을 적어 두는 것이 좋습니다.
1, 귀하의 DailyIncome
에는 게터와 세터가없고 필드는 private
으로 장식되어 있습니다. 다른 학급에서 어떻게 방문 할 것으로 기대하십니까?
2, 시나리오에 따라 Map
을 사용해야합니다.
아래 코드를 참조하십시오.
public class DailyIncome {
public String date;
public String total;
public DailyIncome(String date, String total){
this.date = date;
this.total = total;
}
}
또한 Test
클래스입니다.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Test {
private List<DailyIncome> shopA = new ArrayList<DailyIncome>();
private List<DailyIncome> shopB = new ArrayList<DailyIncome>();
private List<List<String>> shop = new ArrayList<List<String>>();
public void initialize(){
shopA.add(new DailyIncome("20-08-16", "4"));
shopA.add(new DailyIncome("21-08-16", "8"));
shopA.add(new DailyIncome("23-08-16", "3"));
shopB.add(new DailyIncome("20-08-16", "6"));
shopB.add(new DailyIncome("21-08-16", "7"));
shopB.add(new DailyIncome("22-08-16", "8"));
}
public void calculate(){
Map<String, String> mapA = new HashMap<String, String>();
Map<String, String> mapB = new HashMap<String, String>();
for(DailyIncome income: shopA){
mapA.put(income.date, income.total);
}
for(DailyIncome income: shopB){
mapB.put(income.date, income.total);
}
Set<String> keySet = new HashSet<String>();
keySet.addAll(mapA.keySet());
keySet.addAll(mapB.keySet());
Object keyArr[] = keySet.toArray();
for(int i = 0; i < keyArr.length; i++){
String key = (String)keyArr[i];
String totalA = mapA.containsKey(key) ? mapA.get(key):"0";
String totalB = mapB.containsKey(key) ? mapB.get(key):"0";
List<String> itemList = new ArrayList<String>();
itemList.add(key);
itemList.add(totalA);
itemList.add(totalB);
shop.add(itemList);
}
/*
* print
*/
for(List<String> itemList: shop){
System.out.print(itemList.get(0) + " ");
System.out.print(itemList.get(1) + " ");
System.out.print(itemList.get(2));
System.out.println();
}
}
public static void main(String args[]){
Test obj = new Test();
obj.initialize();
obj.calculate();
}
}
와우처럼 당신의 데이터를 변경하면 정말 도움이됩니다, 대단히 감사합니다, 케이스가 닫힙니다. – unknown
나는 두 가지 해결책을 좋아했습니다! 나는 당신이 자바를 사용하고 있다면 (DailyIncome의 예제를 보면서) 이런 식으로 할 수 있다고 생각한다.
다음을 시도해 보라. Integer 대신 DailyIncome의 목록을 만들면된다. 콜렉션 id = Arrays.asList (2316, 2317, 2318); 컬렉션 existingId = Arrays.asList (1004, 1762, 1892, 1342, 1942, 2316);
Collection<Integer> similar = new HashSet<Integer>(id);
similar.addAll(existingId);
System.out.println("Similar:"+similar);
@Tibrogargan는 당신이 클래스와 데이터를 재고하지 않은 경우 함께 결합하는 것이 더 쉬울 수 있지만,지도로 것 말했듯이. 이것은 Java가 데이터를 자동으로 날짜 목록으로 읽는 것이기 때문에 여러 개의 정수 (소득)와 연관되어 있기 때문입니다. 나는 이것을 여러 번 해보았으며 "문제"에 대해 처음 발견 한 방법 대신에이 방법을 사용하는 것이 더 쉽다는 것을 알았습니다.
그러나이 같은지도가 있어야합니다
Map<Date, HashMap<ListId, Long>>
각 목록의 소득을 저장할 수있을 것으로
는, 다음의 결과 "GET (ListId)는"null을 반환하는 경우, 당신은 그 명부를 위해 소득이 올지 않을 것이라는 점을 알고있다.희망이 도움이됩니다. Sneling.
"... 가능합니까?" - 예, 코드를 작성합니다. 너 뭐 해봤 니? –
흠? 너 뭐하려고? 나는 더 큰 목표가 무엇인지 의미합니다. 그것은 당신이 더 큰 무언가를 해결하려고하는 것 같지만 잘못된 전략을 사용하고 있습니다 – Multithreader
귀하의 질문은 귀하가 게시 했어야하는 [mcve]에 가깝지 않으며이를 수행하는 방법이 많습니다. 그러나 어쩌면 아마도 시작하고 싶을 것입니다. 'Map>' –
Tibrogargan